Javascript TypeError:undefined不是Angular factory中init函数的Karma/Jasmine测试中的函数

Javascript TypeError:undefined不是Angular factory中init函数的Karma/Jasmine测试中的函数,javascript,angularjs,unit-testing,jasmine,karma-runner,Javascript,Angularjs,Unit Testing,Jasmine,Karma Runner,我在AngularJS有一个简单的工厂: function usersListDataProviderFactory(UserResource, $q) { var usersListDataProvider = {}, queryParams = {}; init(queryParams); return { initDataProvider: function (queryParams) { init(que

我在AngularJS有一个简单的工厂:

function usersListDataProviderFactory(UserResource, $q) {
    var usersListDataProvider = {},
        queryParams = {};

    init(queryParams);

    return {
        initDataProvider: function (queryParams) {
            init(queryParams);
        },
        getDataProviderPromise: function () {
            return usersListDataProvider;
        }
    };

    function init(queryParams) {
        var defer = $q.defer();

        UserResource.getUsers(queryParams).then(function (response) {
            defer.resolve(response);
        }, function (error) {
            defer.reject(error);
        });

        usersListDataProvider = defer.promise;
    }
}
我已经在Karma/Jasmine中写了测试,在评论了这些行之后通过了测试:

init(queryParams);
当我恢复自动函数调用时,我收到一条消息:

TypeError: undefined is not a function (evaluating 'UserResource.getUsers(queryParams).then')
我知道问题在于测试的配置和间谍创建的那一刻,但我不知道如何解决问题。当前测试配置:

describe('Service: UsersListDataProvider', function () {
    var usersListDataProvider,
        userResourceStub,
        deferred,
        $rootScope,
        $q;

    beforeEach(function () {
        module('UsersList');
    });

    beforeEach(function () {
        userResourceStub = {
            getUsers: function (queryParams) {
                return queryParams;
            }
        };

        module(function ($provide) {
            $provide.value('UserResource', userResourceStub);
        });
    });

    beforeEach(inject(function (_UsersListDataProvider_, _$rootScope_, _$q_) {
        usersListDataProvider = _UsersListDataProvider_;
        $rootScope = _$rootScope_;
        $q = _$q_;

        deferred = _$q_.defer();
    }));

    beforeEach(function () {
        spyOn(userResourceStub, 'getUsers').and.returnValue(deferred.promise);
    });

    describe('Method: initDataProvider', function () {
        it('');
    });
});
有什么想法吗