1
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()blockの先頭でコメントアウトするitと、isolateScope はundefined.
  2. blockhttpBackend.flush()の最後でコメントアウトすると、期待どおりに正しく実行されなかったことを示唆しています (http 呼び出しの後に httpBackend.flush が呼び出されることはありません)。itisolateScope.uploadResult.length = 0httpPOST

3.両方を保持するとhttpBackend.flush()(これは実行されるべきではありません)、予想どおりエラーが発生します: Error: No pending request to flush !.

誰でも私を案内してもらえますか?私はカルマの初心者です。

前もって感謝します。

4

1 に答える 1