【发布时间】:2017-01-23 02:55:32
【问题描述】:
我正在尝试用 Angular 和 jasmine 编写单元测试用例。运行测试时出现以下错误:
var BCM = angular.module("App", ['ui.router','ngAnimate','ui.bootstrap','ngAria','ngTable','ngSanitize','jcs-autoValidate','toaster', 'googlechart'])
.config( [ "$stateProvider","$urlRouterProvider","$controllerProvider","$provide","$compileProvider", function($stateProvider, $urlRouterProvider,$controllerProvider,$provide,$compileProvider) {
$urlRouterProvider.otherwise("/")
$stateProvider
.state('login',{
url: "/",
templateUrl: "media/views/login/login.html",
resolve :{
deps: BCM.resolveScriptDeps(['media/js/app/modules/login/model/login-model.js','media/js/app/modules/login/controllers/login-controller.js'])
},
controller : 'loginController'
})
}]);
/**
* 应用程序加载器的测试用例
*/
'使用严格';
描述('案例调查',函数(){
变量 $state, $stateParams, $q, $templateCache, $location, $rootScope,$injector,getAllCase,getNewCase,getOwnCase,getResolvedCase;
之前(函数(){
angular.mock.module('ui.router');
angular.mock.module('ngAnimate');
angular.mock.module('ui.bootstrap');
angular.mock.module('ngAria');
angular.mock.module('ngTable');
angular.mock.module('ngSanitize');
angular.mock.module('jcs-autoValidate');
angular.mock.module('toaster');
angular.mock.module('googlechart');
模块('caseInvetigation')
});
beforeEach(注入(函数(_$state_,_$stateParams_,_$q_,_$templateCache_,_$location_,_$rootScope_){
$state = _$state_;
$stateParams = _$stateParams_;
$q = _$q_;
$templateCache = _$templateCache_;
$位置 = _$位置_;
$rootScope = _$rootScope_;
spyOn('$state','go');
$templateCache.put('media/views/login/login.html','');
}));
//测试我们的状态是否正确激活
it('应该激活状态', function() {
$state.go('登录');
$rootScope.$digest();
期望($state.current.name).toBe('登录');
});
});
错误...
debug.html:38 错误:[$injector:modulerr] http://errors.angularjs.org/1.5.0/$injector/modulerr?p0=toaster&p1=Error%3A…ocalhost%3A9876%2Fbase%2Fjs%2Flib% 2Fangular%2Fangular-mocks.js%3A2799%3A52)
在错误(本机)
在 http://localhost:9876/base/js/lib/angular/angular.min.js:6:416
在 http://localhost:9876/base/js/lib/angular/angular.min.js:40:60
在 n (http://localhost:9876/base/js/lib/angular/angular.min.js:7:355)
在 g (http://localhost:9876/base/js/lib/angular/angular.min.js:39:135)
在 Object.fb [作为注入器] (http://localhost:9876/base/js/lib/angular/angular.min.js:43:164)
在 Object.workFn (http://localhost:9876/base/js/lib/angular/angular-mocks.js:2799:52)window.__karma__.result @debug.html:38KarmaReporter.specDone @adapter.js:243dispatch @ jasmine.js:2026(匿名函数) @jasmine.js:2000specResultCallback @jasmine.js:927complete @ jasmine.js:376clearStack @ jasmine.js:673QueueRunner.run @ jasmine.js:1932QueueRunner.execute @ jasmine.js:1910queueRunnerFactory @jasmine.js:710Spec.execute @jasmine.js:367fn @jasmine.js:2561attemptAsync @jasmine.js:1967QueueRunner.run @jasmine.js:1922QueueRunner.execute @jasmine.js:1910queueRunnerFactory @jasmine.js:710fn @jasmine .js:2546attemptAsync@jasmine.js:1967QueueRunner.run@jasmine.js:1922QueueRunner.execute@jasmine.js:1910queueRunnerFactory@jasmine.js:710TreeProcessor.execute@jasmine.js:2408Env.execute@jasmine.js:772(匿名函数)@adapter.js:322loaded@debug.html:42(匿名函数)@debug.html:140
debug.html:38 TypeError:无法读取未定义的属性“go”
在对象。 (app-loader-test.js:32)
【问题讨论】:
标签: angularjs unit-testing jasmine karma-jasmine