В контроллере в моем коде определены два модальных режима. Модал и его область создаются во время инициализации. Модальный модал в файле модульного теста всегда хранит только область действия второго модального объекта, который инициализирован, и его область всегда отображается, когда я смотрю в отладчике.
Как это можно решить?
Контроллер:
init();
function init() {
--some code--
createItemEntryModal();
createItemBGModal();
}
function createItemEntryModal() {
itemEntryModalScope = $rootScope.$new();
itemEntryModalScope.testValue = true
$ionicModal.fromTemplateUrl('/item-entry-modal.html', {
scope: itemEntryModalScope,
animation: 'slide-in-up'
}).then((modal) => {
itemEntryModal = modal;
});
}
function createItemBGModal() {
itemBGModalScope = $rootScope.$new();
itemBGModalScope.testValue = false
$ionicModal.fromTemplateUrl('/item-bg-modal.html', {
scope: itemBGModalScope,
animation: 'slide-in-up'
}).then((modal) => {
itemBGModal = modal;
});
}
Файл модульного теста:
mockModal = sinon.stub({
show: function () {
},
hide: function () {
},
remove: function () {
}
});
modalStub = sinon.stub($ionicModal, "fromTemplateUrl", function (url, _config) {
modalScope = _config.scope;
return $q.when(mockModal);
});
describe('some statement here', function () {
beforeEach(function () {
createController(testData().default);
});
it('should show createItemEntryModal', function () {
expect(modalScope.testValue).to.be.equal(true)
});
});
Я ожидаю, что значение будет истинным, потому что это тестовый пример для модального ввода элемента.
Но при отладке я вижу, что testValue отображается как false, поскольку он принимает второй модал в списке инициализации.