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