Question

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();
     });
    });

Maintenant, j'ai ici des situations :

  1. Si je commente httpBackend.flush() au début de it bloc, isolateScope est undefined.
  2. Si je commente httpBackend.flush() au bout du it bloquer, le isolateScope.uploadResult.length = 0 ce qui suggère httpPOST ne s'est pas exécuté correctement comme prévu (httpBackend.flush n'est jamais appelé après l'appel http).

3.Si je garde les deux httpBackend.flush() (ce qui n'est pas censé être fait), j'obtiens l'erreur comme prévu : Error: No pending request to flush !.

Quelqu'un peut-il me guider s'il vous plaît ?Je suis un débutant en karma.

Merci d'avance.

Était-ce utile?

La solution

Essayez également d'ajouter ces lignes dans le bloc de description.

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

ou vous n'avez peut-être pas appelé la fonction dans la directive qui a instancié le post-appel, sinon cela devrait fonctionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top