从角度函数获得响应

时间:2013-10-22 16:56:31

标签: angularjs jasmine

我的控制器中有以下范围功能

$scope.getStaff = function (request, response) {
    var a = [];

    if ($scope.staff !== null) {
        // all terms must be contained
        a = $scope.staff;
        var terms = request.term.toLowerCase().split(' ');

        for (var i = 0; i < terms.length; i++) {
            var t = terms[i];

            if (t) {
                a = $.grep(a, function (item, index) {
                    var v = item.label.toLowerCase();
                    return v.indexOf(t) !== -1;
                });
            }
        }
    }

    response(a.length > 0 ? a : null);
};

我正试图像这样使用茉莉花来测试它:

describe('getStaff', function() {

    it('...', function() {
        $scope.staff = [
            { label: "test1" },
            { label: "test2" }
        ];
        var req = { term: "a b c" };
        expect(req.term.toLowerCase()).toBe('a b c');
        var res = function(a) {
            return a;
        }
        var result = $scope.getStaff(req, res).response;
        expect(result).toBe(null);
    });
});

我最终试图看看getStaff函数中的“a”是什么。我怎样才能在茉莉花测试中获得这个价值?

1 个答案:

答案 0 :(得分:1)

我的回答真是一个意见。除非你愿意在控制器的范围内公开你的'a',否则我的回答是“你不关心”你的茉莉花测试应该只测试返回response(a.length > 0 ? a : null);的答案。

我的直觉告诉我你可能想考虑为这段代码创建一个辅助函数

 $.grep(a, function (item, index) {
                var v = item.label.toLowerCase();
                return v.indexOf(t) !== -1;
            });

与您的getStaff函数分开的单元测试。