У меня есть функция внутри контроллера, которая вызывает метод «сопоставления» объекта.
$scope.createParameter = function (parameter) {
var apiObj = {};
mapping.createApiService(apiObj)
}
эта структура объекта выглядит следующим образом, и этот метод 'createApiService' вызывает метод 'create'apiService.
var mapping = {
createApiService : apiService.create
}
Я ввел этот apiService в свой Testsuite.и шпион также был добавлен следующим образом.
spyOn(apiService, "create").and.callFake(function () {
return {
then: function (callback) {
callback(createResponse);
return {
catch: function () {
}
}
}
}
, но когда я выполняю свой блок it со следующим ожиданием, он выдает ошибку «ожидалось, что вызвано создание шпиона.
expect(apiService.create).toHaveBeenCalled();
Может ли кто-нибудь помочь мне с этим?
РЕДАКТИРОВАТЬ : добавлен код тестирования
describe("Controller", function () {
beforeEach(angular.mock.module("ui.router"));
beforeEach(angular.mock.module("PpmApp"));
var $controller, $scope, $state, $httpBackend, parameterDetails, apiService, constantsProvider;
beforeEach(inject(function (_$controller_, _$rootScope_, _$state_, _$httpBackend_, _apiService_, _constantsProvider_) {
$controller = _$controller_;
$scope = _$rootScope_.$new();
$state = _$state_;
$scope.header = {};
$state.current = {};
$httpBackend = _$httpBackend_;
apiService = _apiService_;
constantsProvider = _constantsProvider_;
$controller = $controller("Controller", { "$scope": $scope, "parameterDetails": parameterDetails });
}));
describe("create", function () {
it("should succeed with valid Input", function () {
var parameter = {
ParameterType: 1,
ParameterId: 2,
LookupCurveStructures: [{
Name: "Parameter name",
XAxisName: "XAxisName",
YAxisName: "YAxisName",
XAxisDataType: 1,
YAxisDataType: 2
}]
};
var createResponse = {
Data: [],
IsSuccess: true,
Message: "Parameter added successfully"
};
spyOn(apiService, "create").and.callFake(function () {
return {
then: function (callback) {
callback(createResponse);
return {
catch: function () {
}
}
}
}
});
$scope.createParameter(parameter);
expect($scope.createPopupInfo.validationErrors.isError).toEqual(false);
expect(apiService.create).toHaveBeenCalled();
expect($scope.parameterDetails.Parameters).toEqual([]);
});
});
});