【发布时间】:2014-03-09 13:34:48
【问题描述】:
我在使用 Angular ui-router 为 AngularJS 应用程序编写 jasmine 测试时遇到了问题。我的服务和应用程序在测试中正确初始化,但控制器无法正常启动。我已经将有问题的应用程序排除在外,并将问题简化为一个表现相同行为的简单控制器示例。这是实际的测试代码:
describe('Test', function() {
var async = new AsyncSpec(this);
var scope = {};
beforeEach(angular.mock.module('TestApp'));
beforeEach(angular.mock.inject(function($rootScope, $state, $templateCache) {
scope.$rootScope = $rootScope;
scope.$state = $state;
$templateCache.put('start.html', '<div class="start"></div>');
}));
async.it('Test that TestCtrl is initialized', function(done) {
scope.$rootScope.status = { done: false };
scope.$rootScope.$on('$stateChangeSuccess', function(event, state, params) {
expect(scope.$rootScope.status.done).toBe(true);
done();
});
scope.$state.transitionTo('start', {}, { notify: true });
scope.$rootScope.$apply();
});
});
这是完整的可运行文件test
应用程序被正确初始化,ui 路由器能够将应用程序转换到正确的状态,但控制器没有被初始化。我需要路由器初始化控制器,因为路由器将关键配置传递给它们。我想避免在测试中重复该配置。
我一定错过了什么,但是什么?感谢您的任何意见,谢谢!
【问题讨论】:
标签: javascript angularjs jasmine angular-ui-router