2014-09-17 8 views
7

Mam wiele testów w Jasmine i Karma, które polegają na sprawdzaniu szyderstwa HTTP httpBackend HTTP. Kiedy dziś uaktualniłem Angular, przestali pracować.Jasmine httpBackend testy przerwane podczas aktualizacji Angular 2.21 do 2.25

Załóżmy, że mam coś takiego w moim teście Jasmine:

// Arrange 
    httpBackend.expect('POST', 'https://localhost:44300/api/projects/1/samples').respond(fakedDto); 
    // Act 
    scope.updateSamples(); 
    httpBackend.flush(); 

i na ostatniej linii, to było doskonale ok wcześniej, otrzymują:

TypeError: $browser.$$checkUrlChange is not a function in C:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js (line 12502) 
$RootScopeProvider/this.$get</[email protected]:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js:12502:9 
createHttpBackendMock/[email protected]:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular-mocks/angular-mocks.js:1481:5 
@C:/SVN/samplemgmt/src/ClientApp/tests/integration/sample/samplecreationController_integration.test.js:341:9 

Ponadto mam zwykłą konfigurację Aby podsumować testy:

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

, który zaczął generować następujący błąd:

Error: [$rootScope:inprog] $digest already in progress 
http://errors.angularjs.org/1.2.25/$rootScope/inprog?p0=%24digest in C:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js (line 78) 
minErr/<@C:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js:78:5 
[email protected]:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js:13009:9 
$RootScopeProvider/this.$get</[email protected]:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular/angular.js:12500:9 
createHttpBackendMock/[email protected]:/SVN/samplemgmt/src/ClientApp/client/bower_components/angular-mocks/angular-mocks.js:1514:5 
@C:/SVN/samplemgmt/src/ClientApp/tests/integration/sample/samplecreationController_integration.test.js:137:9 

Doceniam kilka sugestii, jak sprawić, aby wszystko działało ponownie. Czy są ostatnio jakieś zmiany w testowaniu httpBackend?

+0

Mam podobny problem z httpBackend.flush() i $ zakres zastosowania $(). Nie dostaję "$ digest już w toku", ale dostaję "TypeError: undefined nie jest funkcją", gdy wywołuję jedną z powyższych metod kątowych w testach jaśminu w 1.2.25, ale nie w Angular 1.2.22. –

+0

Czy możesz napisać nieco więcej o swoim teście? Błąd "$ digest już w toku" ma miejsce, jeśli zadzwonisz do $ scope. $ Apply on the wrong location. Po pierwsze, wydaje się, że test jest w porządku, może błąd w testowanym kodzie? – Nico

+6

Problem, który myślę, że wersja makiet kątowych musi być taka sama jak kątowa, więc czy ulepszyliście również makiety kątowe? – laurent

Odpowiedz

5

Dla tych, którzy utknęli ze starym Angularem i nie mogą w tym momencie uaktualnić, here to świetny post wyjaśniający, co się dzieje i jak rozwiązać problem.

Podsumowując -

problem występuje, ponieważ zarówno $httpBackend.flush() i $httpBackend.verifyNoOutstandingExpectation() błędnie starają się trawią. Oczywiście wewnętrzna (z połączenia verifyNoOutstandingExpectation()) nie działa. Na szczęście, możemy polecić to, aby nie wykonywać strawienia - zwrócić uwagę na parametr false.

afterEach(function() { 
    $httpBackend.verifyNoOutstandingExpectation(false); // <-- here 
    $httpBackend.verifyNoOutstandingRequest(); 
}); 
0

Rozwiązane: Manewry kątowe musiały zostać zaktualizowane ręcznie (nie używając altan ..) w tym momencie.

Powiązane problemy