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
Angularjs 如何在那个工厂使用jasmine进行单元测试?_Angularjs_Unit Testing_Karma Jasmine - Fatal编程技术网

Angularjs 如何在那个工厂使用jasmine进行单元测试?

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

我尝试对该代码进行单元测试,该代码由接受行为名称并在闭包中收缩http请求的工厂组成

    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请求尚未解决或失败的情况。