2016-04-04 3 views
9

Wenn ich Winkel Route 1.5.0 bis 1.5.1 aktualisiert, habe ich einen Fehler:Karma Fehler beim Update Winkel Route 1.5.0 bis 1.5.1

Angular Einheit Test: Fehler: Unerwartete Anforderung: GET

Wenn ich Karma zu starten, habe ich eine Fehlermeldung:

1) Call getAll method [App Category] Error: Unexpected request: GET http://myapp.com/app-category?is_active=true No more request expected in /node_modules/angular-mocks/angular-mocks.js

app_category.model.test.js

describe('[App Category]', function() { 

    beforeEach(module('myApp')); 

    var $httpBackend, HttpService, AppCategory; 

    beforeEach(inject(function (_$httpBackend_, _HttpService_, _AppCategory_) { 
     $httpBackend = _$httpBackend_; 
     HttpService = _HttpService_; 

     AppCategory = _AppCategory_; 
    })); 

    it('Call getAll method', function() { 
     var app_category = new AppCategory(); 

     HttpService.mock('GET', 'app-category?is_active=true', 200, [{ code: 'TRAVEL', name: 'Travel' }]); 

     app_category.getAll({ is_active: true }).then(function (request) { 
      expect(request.data[0].code).toBe('TRAVEL'); 
      expect(request.data[0].name).toBe('Travel'); 
     }); 

     $httpBackend.flush(); 
    }); 

}); 

Winkel m ockHTTP.js

(function (angular) { 
    'use strict'; 

    angular.module('ngMockHTTP', []).service('HttpService', function ($httpBackend, config) { 
     this.endpoint = config.api.endpoint; 

     this.mock = function (method, url, status, response) { 
      switch (method) { 
       case 'GET': 
        $httpBackend 
         .expectGET(this.endpoint + url) 
         .respond(status, response); 
       break; 
       case 'POST': 
        $httpBackend 
         .expectPOST(this.endpoint + url) 
         .respond(status, response); 
       break; 
       case 'PUT': 
        $httpBackend 
         .expectPUT(this.endpoint + url) 
         .respond(status, response); 
       break; 
       case 'PATCH': 
        $httpBackend 
         .expectPATCH(this.endpoint + url) 
         .respond(status, response); 
       break; 
       case 'DELETE': 
        $httpBackend 
         .expectDELETE(this.endpoint + url) 
         .respond(status, response); 
       break; 
      } 
     }; 
    }); 
})(angular); 

Ich versuchte REMPLACE:

case 'GET': 
    $httpBackend 
     .expectGET(this.endpoint + url) 
     .respond(status, response); 
break; 

durch diese:

case 'GET': 
    $httpBackend 
     .whenGET(this.endpoint + url, { 
    }).respond(function(){ return [200, response]}); 
break; 

aber ich habe den gleichen Fehler

I Jasmin verwenden 2.4.1, AngularJS 1.5.3, Karma 0.13.0

+1

gleiches Problem hier. Habe es nicht herausgefunden, also habe ich wieder auf 1.5.0 heruntergestuft. – cgcladera

+1

Das gleiche Problem hier sowohl mit 1.5.1 und 1.5.3. Downgrade auf 1.5.0 ... – lucassp

+0

Angular Route 1.5.1, 1.5.2 und 1.5.3 ... gleiches Problem ... –

Antwort

1

Ich aktualisiert mit angularjs 1.5.5, es funktioniert!

von CHANGELOG.md 1.5.5 (Release 2016.04.18):

"ngRoute: allow ngView to be included in an asynchronously loaded template Eagerly loading $route, could break tests, because it might request the root or default route template (something $httpBackend would know nothing about).

It will be re-applied for v1.6.x, with a breaking change notice and possibly a way to disable the feature in tests."

2

Dieser Fehler ist dem eckigen Team bereits bekannt. Die Problemumgehung für diesen Fehler besteht darin, eine Dummy-Vorlage für den $ templateCache zu definieren.
Für weitere Informationen: link

+0

Ja, ich weiß, aber ich wollte dieses Problem beheben –

Verwandte Themen