0
我有一个非常简单的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
)关闭模式并准备测试另一条消息。
第一测试通过,但第二个失败,消息'应为“新messagehello”等于“新message'.' 'modal.close()'不会将模式从dom中删除。你有线索为什么会发生? – jonasnas
,为什么我需要模块('uib/template/modal/window.html')? – jonasnas
我提供的代码片段,都是测试通过。你可以提供codepen/jsfiddle等,以便我可以查看该内容。关于你的其他问题,你需要包含'module('uib/template/modal/window.html')',因为当你在内部调用'$ uibModal.open()'调用时,它会获取模板'window.html' 。 – Gaurav