如何为第二个控制器测试不带模拟的mdDialog?

时间:2018-09-26 22:45:56

标签: angularjs jasmine

简介:我们使用Jasmine和AngularJS。

测试mddialog的方式是为它创建一个模拟:

mockMdDialog = jasmine.createSpyObj('mdDialog', ['alert', 'confirm', 'show', 'hide']);
mockMdDialog.show.and.callFake(function() {returnq.when(true);});

然后出于某种原因,我们使用第二个mdCnfrmDialog

mdCnfrmDialogMock = jasmine.createSpyObj('mdDialog',
            ['title', 'textContent', 'ariaLabel', 'ok', 'cancel']);
mdCnfrmDialogMock.title.and.returnValue(mdCnfrmDialogMock);
mockMdDialog.confirm.and.returnValue(mdCnfrmDialogMock);

问题1:这实际上意味着我们模拟了相同的对象(mdDialog),但对不同的方法使用了不同的模拟对象(对于mockMdDialogalert使用confirm等,以及titletextContent等的mdCnfrmDialog?)

问题2:最后一行(mockMdDialog.confirm.and.returnValue(mdCnfrmDialogMock);)如何工作?我们确实通过执行confirmwhen(true)结果进行硬编码,所以我们总是将值设置为mdCnfrmDialogMock。它对我们有什么帮助?

问题3:我们真的可以避免创建mdCnfrmDialogMock并使用硬编码的title字符串值创建实际的虚假对话框吗?

谢谢!对于这个新手问题,我感到抱歉。

0 个答案:

没有答案
相关问题