Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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

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
如何用$promise.then在jasmine规范中模拟AngularJS$资源_Angularjs_Unit Testing_Jasmine_Promise - Fatal编程技术网

如何用$promise.then在jasmine规范中模拟AngularJS$资源

如何用$promise.then在jasmine规范中模拟AngularJS$资源,angularjs,unit-testing,jasmine,promise,Angularjs,Unit Testing,Jasmine,Promise,我使用$resource设置一些API调用,在测试过程中,我采用了注入$q然后执行 mockMyService.doSomethingAsync.andReturnValue($q.when(successResponse)) 这已经很好地解决了,但是,我有一个方法如下所示: #MyService MyService.doSomethingAsync(params)。$promise.then-> $scope.isLoading=false #MyService规范 mockMyService

我使用
$resource
设置一些API调用,在测试过程中,我采用了注入
$q
然后执行

mockMyService.doSomethingAsync.andReturnValue($q.when(successResponse))

这已经很好地解决了,但是,我有一个方法如下所示:

#MyService
MyService.doSomethingAsync(params)。$promise.then->
$scope.isLoading=false
#MyService规范
mockMyService=
doSomethingAsync:jasmine.createSpy('doSomethingAsync'))
它‘调用服务#doSomethingAsync’,->
inject($q)->mockMyService.doSomethingAsync.and.returnValue($q.when(响应))
controller.methodThawapsServiceCall()方法
范围:$apply()
expect(mockMyService.doSomethingAsync).toHaveBeenCalled()
不幸的是,当一个
$promise时,上面概述的模拟策略似乎不起作用。然后
在最后被链接起来。我最终出现以下错误:

TypeError:“undefined”不是对象(正在计算“MyService.doSomethingAsync(params)。$promise.then”)
仅以doSomethingAsync()结尾的方法。$promise使用此模拟策略通过测试,没有问题


(其他信息:这些是用Karma和PhantomJS运行的Jasmine测试)

事实上,已经解决了

我刚刚将mock改为return
和.returnValue({$promise:$q.when(response)})