2016-06-18 4 views
0

Я начинаю с кармы и жасмина для модульного тестирования. Я с моим первым настоящим испытанием, и я хочу знать, хорошо ли я делаю.Жасмин - проверьте простую функцию инициализации

У меня есть этот метод, который вызывает три функции инициализации.

myApp.initializer.initializeApp = function() { 
    myApp.initializer.eventDelegation(); 
    myApp.initializer.initializeGlobals(); 
    myApp.scrollManager.initialize(); 
}; 

Если я не тест, карма-покрытие не говорит мне, что initializeApp не распространяется, так что я хочу сделать тест, чтобы проверить, все ли правильно. Какой тест необходим? если я напишу эти два разных теста, Karma-coverage говорит мне, что функция теперь покрыта.

describe ("Initializations suite", function(){ 
    it ("must check if functions are defined before call them", function(){ 
     spyOn(myApp.initializer, "eventDelegation"); 
     myApp.initializer.initializeApp(); 
     expect(myApp.initializer.eventDelegation).toHaveBeenCalled(); 
    }); 
}); 

или

describe ("Initializations suite", function(){ 
    it ("must check if functions are defined before call them", function(){ 
     expect(myApp.initializer.initializeApp).not.toThrow(); 
    }); 
}); 

Оба теста делают initializeApp, как покрыты, но, как я уже сказал, я не знаю, что это правильный способ проверить это.

спасибо.

ответ

0

Лучшим способом было бы НЕ spyOnmyApp.initializer.eventDelegation();, а затем ожидать нескольких вещей, которые должен выполнять этот метод.

Мы обычно spyOn методов, которых нет в файле, который мы хотим проверить. Например, если я пишу тестовые примеры для файла контроллера angularjs, который зависит от службы, то я буду spyOn метод службы, который был вызван в моем контроллере.

Что вы сделали в вышеуказанном тесте, издевается над методом, который уже присутствует в файле. Лучшим способом было бы позвонить myApp.initializer.initializeApp и ожидать, что myApp.initializer.eventDelegation(); будет вызван. Также убедитесь, что вы ожидаете такого же поведения, как можете. Это улучшит качество ваших тестовых случаев.

+0

Спасибо за ваш комментарий Siddath ajmera. Что я понимаю в вашем ответе, так это правильно, чтобы иметь оба теста из-за покрытия большего количества поведения, и в первом тесте просто удалите spyOn? – Ijuhash

+0

есть. Просто постарайтесь охватить все больше и больше поведения. –

Смежные вопросы