Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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
Javascript Angular JS-单元测试$resource.get时获取[$resource:badcfg]错误,但在控制器上没有问题_Javascript_Unit Testing_Angularjs - Fatal编程技术网

Javascript Angular JS-单元测试$resource.get时获取[$resource:badcfg]错误,但在控制器上没有问题

Javascript Angular JS-单元测试$resource.get时获取[$resource:badcfg]错误,但在控制器上没有问题,javascript,unit-testing,angularjs,Javascript,Unit Testing,Angularjs,以下是我如何设置我的文章资源: define(['services/index','services/Helpers'],函数(services){ "严格使用",; services.factory('Article'、['$http'、'$resource'、'AppConfig', 函数($http,$resource,AppConfig){ 返回$resource('http://'+AppConfig.APIHost+'/api/v1/articles/:id:'format',{id

以下是我如何设置我的文章资源:

define(['services/index','services/Helpers'],函数(services){
"严格使用",;
services.factory('Article'、['$http'、'$resource'、'AppConfig',
函数($http,$resource,AppConfig){
返回$resource('http://'+AppConfig.APIHost+'/api/v1/articles/:id:'format',{id:'@id',format:'json'});
}
]);
});
当我在控制器中使用它时,它工作得很好。但是,在单元测试中,类似于以下内容:

定义(
[
“应用程序”,
“服务/物品”,
“模拟/文章”
],
函数(){
描述('服务:文章',功能(){
//加载服务的模块
在每个模块之前(模块('ngResource'、'services'、'Mock');
beforeach(函数(){
这是addMatchers({
toEqualData:函数(预期){
返回角度。等于(这是实际的,预期的);
}
});
});
//实例化服务
var Article,$httpBackend,injector,mockValues={};
beforeach(inject(函数)(\u Article\uu,\u$injector\uu){
条款=_条款uu;
喷油器=$injector;
$httpBackend=injector.get(“$httpBackend”);
mockValues.articlesMocksSet=injector.get('articlesMocksSet');
mockValues.articlesSuccessful=injector.get('articlesSuccessful');
$httpBackend.whenGET(mockValues.articlesMocksSet.urlRegex)
.响应(mockValues.articlesSuccessful);
}));
它('应该能够从API中查询',函数(){
var条款;
第条查询(功能(结果){
文章=结果;
});
$httpBackend.flush();
expect(articles).toEqualData(mockValues.articlesSuccessful);
});
//有待解决的问题,如1.0.8版的缺陷
它('应该能够按id查询单个文章',函数(){
mockValues.getArticleMocksSet=injector.get('getArticleMocksSet');
mockValues.getArticleSuccessful=injector.get('getArticleSuccessful');
$httpBackend.whenGET(mockValues.getArticleMocksSet.urlRegex)
.respond(mockValues.getArticleSuccessful);
var条款;
get({id:mockValues.getArticleMocksSet.id},函数(结果){
第条=结果;
});
$httpBackend.flush();
expect(article).toEqualData(mockValues.getArticleSuccessful);
})
});
}
);
我得到了这个错误:

Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array
  http://errors.angularjs.org/1.2.0/$resource/badcfg?p0=object&p1=array

我非常确定资源配置是正确的,并验证JSON对象不是数组。我遗漏了什么吗?

结果是,
$httpBackend
mock的顺序是错误的。以前是:

$httpBackend.whenGET(mockValues.articlesMocksSet.urlRegex)
.响应(mockValues.articlesSuccessful);
$httpBackend.whenGET(mockValues.getArticleMocksSet.urlRegex)
.respond(mockValues.getArticleSuccessful);
因此,首先是
/api\/v1\/articles/
,然后是
/api\/v1\/articles\/[\w|-]*/
。应该是相反的。这就是为什么我得到的是数组响应而不是对象