Введение: мы используем 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
и т. Д., И mdCnfrmDialog для title
, textContent
и т. Д.)
Вопрос № 2: как работает последняя строка (mockMdDialog.confirm.and.returnValue(mdCnfrmDialogMock);
)?Правда ли, что мы жестко закодировали результат confirm
, выполнив when(true)
, поэтому мы всегда устанавливаем значение mdCnfrmDialogMock
.Как это нам помогает?
Вопрос # 3: можем ли мы на самом деле избежать создания mdCnfrmDialogMock
и создать настоящий фальшивый диалог с жестко закодированным title
строковым значением?
Спасибо!Простите за вопросы новичка.