Как проверить mdDialog без макета для второго контроллера? - PullRequest
0 голосов
/ 27 сентября 2018

Введение: мы используем 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 строковым значением?

Спасибо!Простите за вопросы новичка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...