简介:我们使用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
),但对不同的方法使用了不同的模拟对象(对于mockMdDialog
,alert
使用confirm
等,以及title
,textContent
等的mdCnfrmDialog?)
问题2:最后一行(mockMdDialog.confirm.and.returnValue(mdCnfrmDialogMock);
)如何工作?我们确实通过执行confirm
对when(true)
结果进行硬编码,所以我们总是将值设置为mdCnfrmDialogMock
。它对我们有什么帮助?
问题3:我们真的可以避免创建mdCnfrmDialogMock
并使用硬编码的title
字符串值创建实际的虚假对话框吗?
谢谢!对于这个新手问题,我感到抱歉。