用茉莉花模拟$ q.all为angularjs控制器

问题描述 投票:0回答:1

我正在为一个角度控制器编写jasmine测试用例,它有一个init函数,有一个promises数组要解析:

    (function () {
    angular.controller("xyz", ['$scope', "Utility", "Api",
        function ($scope, Utility, Api) {
            var locals = $scope.locals = {
                id: 1,
                amount: 2,
                products: 3
            };
            function init() {
                locals.busyPromise = Utility.resolveAll(
                    {
                        name: 'a',
                        promise: Api.get,
                        then: function (response) { locals.id = 2; }
                    },
                    {
                        name: 'b',
                        promise: Api.find,
                        then: function (response) { locals.amount = 4; }
                    }
                ).then(function (response) { locals.products = 6; });
            }
           init();
        }
    ])
})();

Utility是一个外部脚本,它解析数组中的每个promise并执行then函数来设置本地属性。一旦解决了数组中的所有promise,它就会移动到resolveAll的函数并执行它。

我的问题是,如何在Jasmine中注入依赖项时模拟Utility.resolveAll。在我的情况下,无论我尝试什么,它永远不会进入个人承诺的块然后直接进入当时的resolveAll块。

javascript angularjs karma-jasmine
1个回答
0
投票

在这里我会做什么:

首先,模拟qazxsw poi和qazxsw poi服务

Utility

然后在测试中:

Api
© www.soinside.com 2019 - 2024. All rights reserved.