【发布时间】:2014-12-12 16:54:26
【问题描述】:
我有一个控制器需要路由解析函数提供的东西:
$routeProvider.when('/some/url', {
controller: MyController,
controllerAs: 'myCtrl',
resolve: {
theAnswer: ['deepThought', function(deepThought) {
return deepThought.computeTheAnswerAndReturnAPromise();
}]
}
});
var MyController = ['$route', function($route) {
this.theAnswer = $route.current.theAnswer;
}];
现在我想做一个端到端的测试,检查路由是否匹配以及参数是否正确传播:
// ...set up the routes...
$location.path('/some/url');
$rootScope.$digest();
var ctrl = ???;
expect(ctrl.aThing).toBe(42);
在非测试设置中,我可以输入一条日志语句,并查看控制器已成功创建并获得了正确的数据注入。 唯一的问题是:如何在测试中拿到控制器?
有
$route.current.controller,但它包含控制器的构造函数而不是控制器实例。
1234563 )。
控制器没有注册到任何模块,所以我不能使用
$provide来拦截它的创建并将控制器存储在某个地方。
【问题讨论】:
-
不能用
$controller传入$route.current.controller返回的构造函数吗?