Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 预期的spy go已被调用为[';stateName';],但它从未被调用?_Unit Testing_Jasmine_Angular Ui Router_State - Fatal编程技术网

Unit testing 预期的spy go已被调用为[';stateName';],但它从未被调用?

Unit testing 预期的spy go已被调用为[';stateName';],但它从未被调用?,unit-testing,jasmine,angular-ui-router,state,Unit Testing,Jasmine,Angular Ui Router,State,这很好: spyOn($state,'go') 但当我执行以下行时,它不起作用,并给出以下错误: '预期的spy go已被调用为['stateName',],但它是 从未打过电话' expect($state.go).toHaveBeenCalledWith('stateName'); 描述('家庭控制器测试套件',功能(){ var HomeCtrl、$rootScope、$controller、$scope、$http、$state、factory; var baseURL=”http://

这很好:
spyOn($state,'go')

但当我执行以下行时,它不起作用,并给出以下错误:

'预期的spy go已被调用为['stateName',],但它是 从未打过电话'

expect($state.go).toHaveBeenCalledWith('stateName');
描述('家庭控制器测试套件',功能(){
var HomeCtrl、$rootScope、$controller、$scope、$http、$state、factory;
var baseURL=”http://localhost:8000/";
在每个(模块(“ui.router”))之前;
在每个(模块(“RBC控制器”)之前;
在每个(模块(“ui.bootstrap”))之前;
每个(模块(“切换开关”))之前;
每个(模块(“NGDRAGABLE”);
每个(模块(“角度加载杆”)之前;
在每个(模块(“ngAnimate”))之前;
在每个模块之前(模块(“剑道指令”);
之前(模块(“rbApp”);
beforeach(注入(函数($rootScope,$controller,$httpBackend,$state){
$rootScope=\u$rootScope;
$scope=$rootScope.$new();
$controller=$controller;
httpBackend=$httpBackend;
$state=$state;
HomeCtrl=$controller('HomeCtrl',{'$scope':$scope',$state':$state,'baseURL':baseURL,'roobrickUiService':factory});
}));
它(“测试:HomeCtrl是否存在”,函数(){
expect(HomeCtrl).toBeDefined();
});
它(“测试:xxx运行”,函数(){
间谍($state,'go');
期望($state.go).与('stateName')一起调用;
});
});

这是意料之中的,因为在监视$state.go的指令和检查调用$state.go()的指令之间,有0条指令。所以$state.go()实际上从未被调用过。这个测试毫无意义。间谍的目的是进行间谍,然后调用一些应该调用$state.go的函数,并验证该函数是否确实调用了$state.go。但是您没有调用任何函数。@JB Nizet我是单元测试方面的新手,因此非常感谢您的帮助,所以我有一个类似于
$scope.goadd=function(){$state.go('stateName');}我想测试这个函数,但我真的无法测试它,这就是为什么我把这个函数的主体放在外面,这样我就可以单独测试它了。但我想这是错误的方式。请帮助测试该函数,您需要调用它。在调用spyOn()和调用expect()之间。如果你不调用它,你就没有在测试任何东西。@JB Nizet
spyOn($state,'go')。和.callThrough();spyOn($scope,'goadd')。和.callThrough();$scope.goadd();期望($state.go).与('stateName')一起调用;期望($scope.goadd).tohavebeincalled()**现在错误是:**预期spy go已使用['stateName']调用,但实际调用为['stateName']。我不知道为什么它应该调用state,但它不使用state调用。这是意料之中的,因为在监视$state.go的指令和检查调用$state.go()的指令之间,有0条指令。所以$state.go()实际上从未被调用过。这个测试毫无意义。间谍的目的是进行间谍,然后调用一些应该调用$state.go的函数,并验证该函数是否确实调用了$state.go。但是您没有调用任何函数。@JB Nizet我是单元测试方面的新手,因此非常感谢您的帮助,所以我有一个类似于
$scope.goadd=function(){$state.go('stateName');}我想测试这个函数,但我真的无法测试它,这就是为什么我把这个函数的主体放在外面,这样我就可以单独测试它了。但我想这是错误的方式。请帮助测试该函数,您需要调用它。在调用spyOn()和调用expect()之间。如果你不调用它,你就没有在测试任何东西。@JB Nizet
spyOn($state,'go')。和.callThrough();spyOn($scope,'goadd')。和.callThrough();$scope.goadd();期望($state.go).与('stateName')一起调用;期望($scope.goadd).tohavebeincalled()**现在错误是:**预期spy go已使用['stateName']调用,但实际调用为['stateName']。我不知道为什么它应该给国家打电话,但它没有给国家打电话。