返回DS.defineResource对象的服务的jasmine测试用例

时间:2018-03-20 05:22:31

标签: jasmine karma-jasmine angular1.6 jsdata

有人可以帮我测试下面的代码。我的功能如下

function BiAlertsService(DS,companyUrlConfig) {
return DS.defineResource({
    name: 'bi-alerts',
    idAttribute: 'id',
    endpoint: companyUrlConfig.companyApi + companyUrlConfig.companyBaseUrl+ companyUrlConfig.resources.alerts + '/' + '{companyId}/{empId}' + companyUrlConfig.resources.biAlerts,
    deserialize: function(resourceConfig, data) {
        var json = data.data;
        return {
                id :    JSON.stringify(json),
                data : json.data
            };
    }

});

}

我能够初始化服务,bur无法测试反序列化功能 我试图为它创建一个间谍,但有些人无法测试它 以下是我的规范代码

beforeEach(inject(function (biAlerts,_DS_, $q,$rootScope,_companyUrlConfig_) {
    biAlerts = biAlerts;
    $scope = $rootScope.$new();
    companyUrlConfig=_companyUrlConfig_;
    DS=_DS_;

    deferred=$q.defer();

}));
DS.defineResource = jasmine.createSpy('').and.returnValue(deferred.promise);

提前致谢

1 个答案:

答案 0 :(得分:0)

我们必须执行反序列化功能,同时通过传递所需的参数(如下所示)将对象传递给defineResource方法。

请看下面的代码。...

beforeEach(function () {
		var mockDSService = function () {
			return {
				defineResource: function (obj) {
					obj.deserialize(null, { data: {}});
				}
			}
		};

  // module configuration along with dependecies
		var moduleName = 'trinet.shared.services.Names';

		angular
			.module(moduleName, [])
			.service('DS', mockDSService)
			.constant('profileUrlConfig', mockprofileUrlConfigConstant)
			.service('Names', Names);

		angular.mock.module(moduleName);
	});

使用这段代码,它会自动执行并覆盖反序列化功能