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 に答える