我的代码中的控制器具有两个定义的模态。模态及其作用域是在初始化期间创建的。单元测试文件中的模拟模态始终仅存储已初始化的第二个模态的范围,并且当我在调试器中查看时,其范围始终出现。
如何解决?
控制器:
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)
});
});
我期望该值为true,因为这是项目输入模态的测试用例。 但是在调试时,我看到testValue显示为false,因为它采用了初始化列表中的第二个模式。