单位测试角度为

时间:2016-05-27 16:06:27

标签: angularjs unit-testing

整个故事发表在Angular 1.5.5上。

所以我在$ onInit函数上创建了一个组件及其控制器,它基本上包含了这个请求

            apphelper.readFromConfig($http).then(function (config) {...});

我得到 [$ http:badreq] Http请求配置网址必须是字符串错误

apphelper是一个典型的javascript闭包函数,几个不同的应用程序使用它来获取预定义的ajax调用,它看起来像这样

var apphelper = function () {
    var config;
 return {
        readFromConfig: function ($http) {
            return $http.get(this.getConfig()).
                then(function (response) {
                    return response.data;
                });
        },
 setConfig: function (_config) {
            config = _config;
        },
        getConfig: function () {
            return config;
        }
}
} ();

现在这里是非常奇怪的部分 setConfig()在工厂内部触发

app.factory('session', function GetSession($http, $q) {
        return {
            getConfig: function (configuration) {
                var defer = $q.defer();

                if (!configuration) {
                    configuration = "default";
                }
                $http({
                    url: "/config/" + configuration,
                    method: "GET",
                    data: "{}",
                    headers: { 'Content-Type': 'application/json' }
                }).success(function (data, status, headers, config) {
                    //staff
                    apphelper.setConfig("/config/" + configuration);
                    defer.resolve('done');
                }).error(function (data, status, headers, config) {
                    console.log(data);
                    defer.reject();
                });
                return defer.promise;
            }
        }
    });

并且此工厂从routeprovider

触发
app.config(['$routeProvider',
            function ($routeProvider) {
                $routeProvider.
                    when('/:config', {
                        templateUrl: 'partials/components/my-map.html',
                        controller: 'MapController',
                        resolve: {
                            configData: function (session, $route) {
                                return session.getConfig($route.current.params.config);
                            }
                        }
                    });
            }]);

所有这个故事都有两个原因

  • 首先我得到一个指令,在dom初始化之前需要一些值(因此解析)
  • 第二,如果配置服务中有任何更改
  • ,我需要在页面组件加载时检查

虽然看似有效但很奇怪。现在我无法弄清楚如何对这个东西进行单元测试。任何帮助将不胜感激

0 个答案:

没有答案