Angularjs 如何在那个工厂使用jasmine进行单元测试?
我尝试对该代码进行单元测试,该代码由接受行为名称并在闭包中收缩http请求的工厂组成Angularjs 如何在那个工厂使用jasmine进行单元测试?,angularjs,unit-testing,karma-jasmine,Angularjs,Unit Testing,Karma Jasmine,我尝试对该代码进行单元测试,该代码由接受行为名称并在闭包中收缩http请求的工厂组成 var app = angular.module("behaviour",[]); var behaviour = app.factory('Behaviours',['http',function(http){ var BehavioursJson = $http.get('data.json'); return { getBehaviour : functi
var app = angular.module("behaviour",[]);
var behaviour = app.factory('Behaviours',['http',function(http){
var BehavioursJson = $http.get('data.json');
return {
getBehaviour : function(behaviourName) {
if (BehavioursJson[behaviourName]) {
var behaviour = BehavioursJson[behaviourName];
return function (behaviourData, callback) {
var keys = Object.allKeys(behaviourData);
var headers = {};
var data = {};
var url = behaviour.path;
// some process to fill headers and data objects
$http({
method: behaviour.method,
url: url,
data: data,
headers: headers
}).then(function successCallback(response) {
callback(response,null);
},function errorCallback(error) {
callback(null,error);
});
}
};
return null;
}
}
}]);
注意:使用茉莉花时,您的工厂存在一些问题。首先,BehaviorJSON不是构造函数,所以它应该是camelCase;其次,JSON是对象的字符串表示形式,因此您不会调用此变量JSON;第三点(最重要的是),您正在将$http.get()的返回值分配给Behavior JSON,但是$http返回的是一个承诺对象,而不是http响应。请给我分配一个示例,好吗?有很多教程介绍如何在Angular中对服务/工厂进行单元测试。或者。好的,我会看一看,谢谢你没有回答你的问题,但这里有一个清理过的工厂版本:--如果你要在实例化时发出一个HTTP请求并像这样缓存结果,你需要准备好处理HTTP请求尚未解决或失败的情况。