【发布时间】:2017-02-24 23:11:08
【问题描述】:
我有一个非常简单的 service.show(),它基本上通过一些配置调用 $uibModal 并返回模态实例
function modalService($uibModal) {
return {
show(message) {
return $uibModal.open({
bindToController: true,
controllerAs: '$ctrl',
template: "<div id='message'>{{$ctrl.message}}</div>",
controller: [function() {
this.message = message;
}]
});
}
}
}
我想编写一个测试来验证实际的模态以及它是否包含预期的消息。像这样的:
it('should show correct message', (done) => {
modal = modalService.show('hello');
modal.rendered.then(()=> {
expect($('#message').text()).toBe('hello');
done()
});
});
但是rendered 承诺永远不会得到解决。我可以做一些解决方法,比如将expect 包装成$timeout 并做$timeout.flush() 但不确定这是否是正确的方式,即使这样我仍然无法进行清理(afterEach)来关闭模式和准备好测试另一条消息。
【问题讨论】:
标签: angularjs unit-testing jasmine modal-dialog karma-jasmine