Следите за методом, который вызывает другой метод API изнутри - PullRequest
0 голосов
/ 12 июня 2018

У меня есть функция внутри контроллера, которая вызывает метод «сопоставления» объекта.

$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([]);
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...