1

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

$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”是什么。如何在茉莉花测试中获得该值?

4

1 回答 1

1

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

我的直觉告诉我,您可能需要考虑为此代码创建一个辅助函数

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

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

于 2013-10-23T16:08:03.683 回答