1
我試圖測試功能,它基本上是做,角茉莉花測試模態和解決結果
- 打開確認模式 模式的
- 返回結果(按鍵值的確定或取消)
- 如果條件檢查導致
- 調用另一個函數
我的控制器功能是;
openPopup() {
confirmationModal.open().then((result) => {
if(result === 'OK') {
someService.doSomething()
.then(() => {
showSuccess();
});
}
}).finally(() => {
confirmationModal.close();
});
}
而我的測試是;
describe('confirmation modal',() => {
beforeEach(() => {
inject(($controller, _$q_) => {
var q = _$q_;
someService = {
doSomething: jasmine.createSpy()
};
var modalResult = {
then: function(callback) {
callback("OK");
}
};
confirmationModal = {
open: jasmine.createSpy().and.returnValue(q.when({ result: modalResult })),
close: jasmine.createSpy()
};
Ctrl = $controller('MainController', {
$scope: scope, confirmationModal: confirmationModal, someService: someService
});
});
});
it('should pass OK value',() => {
Ctrl.openPopup();
scope.$digest();
expect(someService.doSomething).toHaveBeenCalled();
});
});
當我通過噶運行此 - PhantomJS,我得到預計間諜未知的已被調用。這是我假設我不能通過如果條件與模態結果。基本上需要測試條件模態結果如果我可以。 當我測試並期望啓用或關閉confirmationModal函數時,測試通過但如果我期待函數在confirmationModal被調用後測試失敗。
我正在爲這個可能基本的事情而苦苦掙扎,我真的很抱歉已經如果我錯過了一些規則或我的英語不好。
已經謝謝了!
對不起,我實際上切斷了它,當我試圖複製/粘貼,所以控制器實際依賴於服務。並感謝實際幫助我找到了它,我發送錯誤的字符串,實際情況檢查一些字符串:) – burakakkor
條件很簡單。因爲它需要一個字符串,所以它應該按照'.and.returnValue(q.when('OK'))''的方式工作。 – estus