Javascript 控制器中的离子单元测试,spyOn未通过
这是一个非常简单的测试。。而且它不会过去。。如果有人能对这件事有所了解:) 这是需要测试的控制器代码(部分代码) AppCtrlJavascript 控制器中的离子单元测试,spyOn未通过,javascript,unit-testing,ionic-framework,Javascript,Unit Testing,Ionic Framework,这是一个非常简单的测试。。而且它不会过去。。如果有人能对这件事有所了解:) 这是需要测试的控制器代码(部分代码) AppCtrl $scope.requestAuthorization = function() { requestAuthorization(); }; if ($stateParams.requestAuthorization === true) { console.log('$stateParams.requestAuthorization')
$scope.requestAuthorization = function() { requestAuthorization(); };
if ($stateParams.requestAuthorization === true) {
console.log('$stateParams.requestAuthorization');
$scope.requestAuthorization();
}
function requestAuthorization() {
console.log('requestAuthorization()');
// more code here..
}
测试
describe('AppCtrl', function() {
var AppCtrl, $rootScope, $scope, $stateParams;
beforeEach(module('myapp'));
// disable ionic cache to avoid GET errors
beforeEach(module(function($provide, $urlRouterProvider) {
$provide.value('$ionicTemplateCache', function() {});
$urlRouterProvider.deferIntercept();
}));
beforeEach(inject(function($controller, _$rootScope_, _$injector_, _$stateParams_) {
$rootScope = _$rootScope_;
$scope = $rootScope.$new();
$stateParams = _$stateParams_;
AppCtrl = $controller('AppCtrl',{
$scope: $scope
});
spyOn($scope, 'requestAuthorization');
$stateParams.requestAuthorization = true;
}));
it('$stateParams.requestAuthorization should be defined', function() {
expect($stateParams.requestAuthorization).toBeDefined();
});
it('$scope.requestAuthorization should be defined', function() {
expect($scope.requestAuthorization).toBeDefined();
});
// this test is not passing..
it('should call requestAuthorization', function() {
expect($scope.requestAuthorization).toHaveBeenCalled();
});
});
函数实际上正在被调用,我可以在控制台中看到console.log,但它没有传递
简单的测试,全部通过。。除了最后一个
谢谢您的时间:)
注意:有一个
$stateParams.requestAuthorization
,还有一个$scope.requestAuthorization
。第一个是布尔值,另一个是函数,函数未传递。在beforeEach块中,在实例化控制器之前定义$stateParams
beforeEach(inject(function($controller, _$rootScope_, _$injector_, _$stateParams_) {
$rootScope = _$rootScope_;
$scope = $rootScope.$new();
$stateParams = _$stateParams_;
$stateParams.requestAuthorization = true;
AppCtrl = $controller('AppCtrl',{
$scope: $scope,
$stateParams: $stateParams
});
spyOn($scope, 'requestAuthorization');
}));
不,不工作:/,它实际上很奇怪,我在另一个控制器上有一个非常类似的测试,它正在工作。。但不在此控制器中。。