2013-03-02 3 views
2

Мне было интересно, как использовать жасмин для проверки внешних зависимостей.Жасмин + тест внешней зависимости

Например, у меня есть модуль наложения, что чисто показывает и скрывает фон маску:

function Overlay() { 

} 

Overlay.prototype.show = function() { 

} 

Overlay.prototype.hide = function() { 

} 

Это полные тесты Жасмин блок настроить.

Я тогда еще один модуль Dialog, который использует модуль наложения:

function Dialog() { 

} 

Dialog.prototype.show() { 
//do dialog stuff here, then show overlay 
var overlay = new Overlay(); 
overlay.show(); 
} 

У меня есть тесты, которые проверяют Жасмин все диалоговое окно, кроме наложения. Исходя из предположения, что тесты модуляции наложения устанавливаются и проходят, в диалоговом тестировании просто необходимо убедиться, что наложение var определено и что его метод show был вызван?

Для разделения проблем это лучший способ сделать это?

Заранее спасибо

ответ

3

Лучший способ будет вводить экземпляр вашей накладки в конструктор диалога.

function Dialog (overlay) { 
    this.overlay = overlay: 
} 

Dialog.prototype.show() { 
this.overlay.show(); 
} 

В вашем тесте вы можете просто ввести шпиона.

var overlay = {show: jasmine.createSpy()}; 
var dialog = new Dialog(overlay); 
dialog.show(); 
expect(overlay.show). toHaveBeenCalled(); 

Другим способом было бы следить за глобальной Overlay функции и возвращает объект с шпионить функции show.

+0

, что имеет смысл, но как насчет того, когда мой диалог используется в другом модуле, наложение затем должно быть введено на два уровня. например, другой модуль (диалог, оверлей), диалог (оверлей) и т. д. Вот почему я вызываю новый Overlay() в моем диалоговом скрипте, но может ли этот способ быть правильно проверен? – user502014

+0

Объясняется это во втором примере –

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