我正在尝试使用业力测试angularjs的控制器,该控制器注入$ route来获取当前路径,但是当我尝试对其进行业力测试时,我得到了。
TypeError: 'undefined' is not an object( evaluating '$route.current')
这是我的控制器:
angular.module('myApp').controller('EditController',['$scope', '$http', '$route', function($scope,
$http,$route){
var myId = $route.current.params.myId;
$scope.var1 = 'var1';
console.log(myId);
}]);
这是我的业力档案:
'use strict';
describe('Controller: EditController', function(){
beforeEach(module('myApp'));
var EditCtrl,scope,route;
beforeEach(inject(function($controller,$rootScope,$route,$http){
scope=$rootScope.$new();
EditCtrl = $controller('EditCtrl',{
$scope:scope,
$route:route
});
}));
it('should have var1 equal to "var1"',function(){
expect(scope.var1).toEqual('var1');
});
});
最佳答案
您的beforeEach
挂钩没有注入$route
服务。更改为此。
beforeEach(inject(function($controller,$rootScope,$route,$http){
scope=$rootScope.$new();
route = $route;
EditCtrl = $controller('EditCtrl',{
$scope:scope,
$route:route
});
}));
您可能还想模拟
$route.current
对象,以防未正确实例化它,因为测试中没有进行任何路由。在这种情况下,您可以添加$route.current = { params: { myId: 'test' } };
在钩。
关于javascript - angularjs karma 测试typeerror $ route,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26042781/