문제

describe("File Upload directive", function() {
      var elm, scope,httpBackend , controller , isolateScope;

     beforeEach(angular.mock.module("fileApp"));


     beforeEach(angular.mock.inject(function($rootScope, $compile , $httpBackend) {
          elm = angular.element("<div file-upload base-upload-url='files/' ></div>");
          httpBackend = $httpBackend;
          scope = $rootScope;
          httpBackend.whenGET("fileUploadTemplate.html").respond(true);
          $compile(elm)(scope);
          controller = elm.controller;

          scope.$digest();
    }));

    it("should upload selected file",function(){
      httpBackend.flush();
      isolateScope = elm.isolateScope();
      expect(isolateScope).toBeDefined();

      isolateScope.selectedFiles=[{"webkitRelativePath":"","lastModifiedDate":"2014-05-26T11:15:55.000Z","name":"a.csv","type":"text/csv","size":131}];
      var index = 0;
      httpBackend.expectPOST("files/").respond({"fileId":67603});

      expect(isolateScope.uploadResult.length).toBe(1);
      //httpBackend.flush();
     });
    });
.

지금, 여기에 상황이 있습니다 :

  1. httpBackend.flush() 블록의 시작에서 it를 주석 처리하면 IsolateScope는 undefined입니다.
  2. httpBackend.flush() 블록의 끝에서 it를 묻는 경우 isolateScope.uploadResult.length = 0가 예상대로 올바르게 실행되지 않는 httpPOST가 올바르게 실행되지 않았습니다.
  3. 3. httpBackend.flush() (수행되지 않아야 함)를 모두 유지하면, 예상대로 오류가 발생합니다.

    누구든지 나를 안내 할 수 있습니까?나는 카르마의 초보자이다.

    미리 감사드립니다.

도움이 되었습니까?

해결책

DEPERCE 블록에도 이러한 줄을 추가하십시오.

 afterEach(function() {
         $httpBackend.verifyNoOutstandingExpectation();
         $httpBackend.verifyNoOutstandingRequest();
       });
.

또는 게시물 호출을 인스턴스화하는 지시문에서 함수를 호출하지 않았으므로 작동해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top