Angularjs Bootstrap$modal控制器组件的角度测试
下面是我试图进行单元测试的控制器的部分代码,但我运气不好。我一直收到错误消息error:spyOn无法为account()找到要监视的对象 控制器Angularjs Bootstrap$modal控制器组件的角度测试,angularjs,unit-testing,Angularjs,Unit Testing,下面是我试图进行单元测试的控制器的部分代码,但我运气不好。我一直收到错误消息error:spyOn无法为account()找到要监视的对象 控制器 $scope.confirmDelete = function (account) { var modalInstance = $modal.open({ templateUrl: '/app/accounts/views/_delete.html', controller:
$scope.confirmDelete = function (account) {
var modalInstance = $modal.open({
templateUrl: '/app/accounts/views/_delete.html',
controller: function (global, $scope, $modalInstance, account) {
$scope.account = account;
$scope.delete = function (account) {
global.setFormSubmitInProgress(true);
accountService.deleteAccount(global.activeOrganizationId, account.entityId).then(function () {
global.setFormSubmitInProgress(false);
$modalInstance.close();
},
function (errorData) {
global.setFormSubmitInProgress(false);
});
};
$scope.cancel = function () {
global.setFormSubmitInProgress(false);
$modalInstance.dismiss('cancel');
};
},
resolve: {
account: function () {
return account;
}
}
});
modalInstance.result.then(function (asset) {
$scope.getAll(1, 100);
}, function () {
console.log('Modal dismissed at: ' + new Date());
});
};
测试
describe("confirmDelete() function", function () {
var controller, scope;
// sets scope of controller before each test
beforeEach(inject(function ($rootScope, _$modal_) {
scope = $rootScope.$new();
controller = $controller('AccountsController',
{
$scope: scope,
$stateParams: mockStateParams,
$state: mockState,
// below: in order to call the $modal have it be defined and send on the mock modal?
$modal: _$modal_,
//modalInstance: mockModalInstance,
global: mockGlobal,
accountService: mockAccountSrv
});
}));
beforeEach(inject(function ($modal) {
spyOn($modal, 'open');
spyOn(scope.modalInstance, "account");
}));
it("make sure modal promise resolves", function () {
scope.confirmDelete(mockAccountSrv.account);
expect($modal.open).toHaveBeenCalled();
});
});
问题是,在第二个
beforeach
中,您试图监视scope.modalInstance
,而该字段不存在。因此,茉莉花找不到监视的对象
另一个问题是,您使用了模态的结果
承诺,因此您必须告诉您的mock返回它,以免得到TypeError
beforeEach(inject(function ($modal, $q) {
spyOn($modal, 'open').and.returnValue({
result: $q.defer().promise
});
)
下一步是返回一个承诺,您可以在单元测试中解决它,以便在解决或拒绝它时验证正确的行为。您可以通过这种方式模拟模式窗口关闭
阅读更多关于美国间谍的信息
还要注意的是,您不必将模式服务注入控制器(我指的是
$modal:$modal.
行)。服务是单身人士。当你监视它的任何实例时,它会在任何地方监视它。问题是,在每个之前的第二个中,你试图监视范围。modalInstance
,而该字段不存在。因此,茉莉花找不到监视的对象
另一个问题是,您使用了模态的结果
承诺,因此您必须告诉您的mock返回它,以免得到TypeError
beforeEach(inject(function ($modal, $q) {
spyOn($modal, 'open').and.returnValue({
result: $q.defer().promise
});
)
下一步是返回一个承诺,您可以在单元测试中解决它,以便在解决或拒绝它时验证正确的行为。您可以通过这种方式模拟模式窗口关闭
阅读更多关于美国间谍的信息
还要注意的是,您不必将模式服务注入控制器(我指的是$modal:$modal.
行)。服务是单身人士。当你监视它的任何实例时,它会在任何地方监视它。问题是,在每个
之前的第二个中,你试图监视范围。modalInstance
,而该字段不存在。因此,茉莉花找不到监视的对象
另一个问题是,您使用了模态的结果
承诺,因此您必须告诉您的mock返回它,以免得到TypeError
beforeEach(inject(function ($modal, $q) {
spyOn($modal, 'open').and.returnValue({
result: $q.defer().promise
});
)
下一步是返回一个承诺,您可以在单元测试中解决它,以便在解决或拒绝它时验证正确的行为。您可以通过这种方式模拟模式窗口关闭
阅读更多关于美国间谍的信息
还要注意的是,您不必将模式服务注入控制器(我指的是$modal:$modal.
行)。服务是单身人士。当你监视它的任何实例时,它会在任何地方监视它。问题是,在每个
之前的第二个中,你试图监视范围。modalInstance
,而该字段不存在。因此,茉莉花找不到监视的对象
另一个问题是,您使用了模态的结果
承诺,因此您必须告诉您的mock返回它,以免得到TypeError
beforeEach(inject(function ($modal, $q) {
spyOn($modal, 'open').and.returnValue({
result: $q.defer().promise
});
)
下一步是返回一个承诺,您可以在单元测试中解决它,以便在解决或拒绝它时验证正确的行为。您可以通过这种方式模拟模式窗口关闭
阅读更多关于美国间谍的信息
还要注意的是,您不必将模式服务注入控制器(我指的是$modal:$modal.
行)。服务是单身人士。当你监视它的任何实例时,它会监视它的任何地方。这是有意义的,除非现在我得到一个TypeError:“undefined”不是一个对象(评估“modalInstance.result”)。我在想我必须做一个假的模拟模态,但我似乎还不能让它完全起作用。我也有下面的代码来消除错误,我在正确的轨道上吗?mockModalInstance.result=函数(promiseHandler){return promiseHandler();};这是有道理的,但现在我得到一个TypeError:“undefined”不是一个对象(计算“modalInstance.result”)。我在想我必须做一个假的模拟模态,但我似乎还不能让它完全起作用。我也有下面的代码来消除错误,我在正确的轨道上吗?mockModalInstance.result=函数(promiseHandler){return promiseHandler();};这是有道理的,但现在我得到一个TypeError:“undefined”不是一个对象(计算“modalInstance.result”)。我在想我必须做一个假的模拟模态,但我似乎还不能让它完全起作用。我也有下面的代码来消除错误,我在正确的轨道上吗?mockModalInstance.result=函数(promiseHandler){return promiseHandler();};这是有道理的,但现在我得到一个TypeError:“undefined”不是一个对象(计算“modalInstance.result”)。我在想我必须做一个假的模拟模态,但我似乎还不能让它完全起作用。我也有下面的代码来消除错误,我在正确的轨道上吗?mockModalInstance.result=函数(promiseHandler){return promiseHandler();};