gpt4 book ai didi

javascript - angularjs karma 测试 typeerror $route

转载 作者:行者123 更新时间:2023-12-02 16:57:45 25 4
gpt4 key购买 nike

我正在尝试使用 karma 测试 angularjs 的 Controller , Controller 注入(inject) $route 来获取当前路径,但是当我尝试对其运行 karma 测试时,我得到了。

TypeError: 'undefined' is not an object( evaluating '$route.current')

这是我的 Controller :

angular.module('myApp').controller('EditController',['$scope', '$http', '$route', function($scope,
$http,$route){

var myId = $route.current.params.myId;
$scope.var1 = 'var1';
console.log(myId);
}]);

这是我的 Karma 文件:

'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 Hook 未注入(inject) $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' } };

也在钩子(Hook)里。

关于javascript - angularjs karma 测试 typeerror $route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26042781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com