Пытаюсь написать модульный тест для моего контроллера Ember. Он просто изменяет свойство, а затем открывает модальное окно начальной загрузки. Возникли трудности с выяснением того, как проверить, что модальное окно действительно открывается. Не уверен, что это вообще относится к модульному тесту или интеграционному тесту. Если его нет в моем модульном тесте, кажется, что позже будет сложно определить покрытие кода. Версия начальной загрузки: 3.3.1, версия ember-cli 0.1.5, узел 0.10.33. Вот что я пробовал безрезультатно:
1.
test('loginClick() opens modal', function(){
var controller = this.subject();
$('#login-modal').on('show.bs.modal', function(){
equal(true, true, "the show.bs.modal event fired");
});
controller.send('loginClick', 'anything');
});
нет ошибки утверждения
2.
test('loginClick() opens modal', function(){
var controller = this.subject();
andThen(function(){
controller.send('loginClick', 'anything');
stop();
Ember.run.later(function(){
start();
equal($('#login-modal').hasClass('in'), true, "has the 'in' class");
}, 500);
});
});
andThen не определено
Вот контроллер:
loginClick: function(param){
this.set('provider', param);//facebook or google
$('#login-modal')
.modal();
}
Любые другие предложения или лучшие практики о том, как тестировать такие вещи, будут оценены.
p.s. Также попытался добавить это перед щелчком:
$.support.transition = false;
по чьему-то предложению, но это не отключает модальный переход.
$.support.transition = false
? При первоначальной проверке он должен работать с первым. Я бы просто установил его в вашем файлеtests/test-helper.js
, чтобы отключить его для всех виджетов начальной загрузки. Кроме того,andThen
определяется только после вызоваapp.injectTestHelpers()
, что обычно делается в помощникеstartApp
(что делается при написании интеграционных/приемочных тестов). - person slindberg   schedule 16.01.2015