>source

버튼을 눌렀을 때 실행되는 컨트롤러 내에 스코프 메소드를 만들었습니다. 단위 테스트 사례를 작성하고 있습니다. beforeEach 블록에 모듈을 삽입하고 스코프 함수를 생성 한 다음 'it'메서드에서 사용하고 호출 여부를 확인했습니다. 그러나 찾을 수없는 방법으로 오류가 발생했습니다.

컨트롤러

   'use strict';
angular.module('myApp.view1', ['ngRoute'])
  .config(['$routeProvider', function ($routeProvider) {
    $routeProvider.when('/view1', {
      templateUrl: 'view1/view1.html',
      controller: 'View1Ctrl'
    });
  }])
  .controller('View1Ctrl', ['$scope',View1Ctrl])
  function View1Ctrl($scope) {
    $scope.user = {
      name: '',
      last: ''
    }
    $scope.showFormData = function() {
      $scope.formData = $scope.user.name + $scope.user.last;
    }
  }

spec.js

  'use strict';
describe('myApp.view1 module', function () {
  var $controller, $rootScope;
  beforeEach(module('myApp.view1'));
  beforeEach(inject(function (_$controller_, _$rootScope_) {
    $controller = _$controller_;
    $rootScope = _$rootScope_;
  }));
  describe('view1 controller', function () {
    var $scope, controller, formData;
    beforeEach(function () {
      $scope = $rootScope.$new();
      controller = $controller('View1Ctrl', {
        $scope: $scope
      });
      spyOn(controller, 'showFormData');
    });
    it('should check for the show form details', function () {
      $scope.user.name = "Sandeep";
      $scope.user.last = "Gupta";
      expect($scope.showFormData).toHaveBeenCalled();
      expect($scope.user.name + $scope.user.last).toEqual(firstname);
    });
  });
});

이 문제를 해결하는 데 도움이 필요합니다.


  • 답변 # 1

    컨트롤러의 showFormData 메소드를 감시하려는 것 같습니다 :

     spyOn(controller, 'showFormData');
    
    

    단, showFormData가 컨트롤러에 존재하지 않는 것은 컨트롤러 범위의 방법입니다.

    다음을 사용해야합니다 :

     spyOn($scope, 'showFormData');
    
    

    또한 spyOn과 expect (...). toHaveBeenCalled ()에 동일한 객체를 사용해야한다는 것을 아는 것도 중요합니다. 귀하의 경우 controller.showFormData ()를 감시하면서 $scope.showFormData ()가 호출 될 것으로 예상하는 경우

관련 자료

  • 이전 증가하는 ID 값과 작성된 날짜가 주어지면 SQL 문을 작성하여 날짜가 oracle의 ID와 다른지 여부를 찾으십시오
  • 다음 amazon web services - AWS Cloudformation은 컨테이너 정의없이 작업 정의를 생성합니다