2014-09-17 1 views
7

У меня есть много тестов в Jasmine и Karma, которые полагаются на проверенные HTTP-проверки $ httpBackend. Когда я сегодня утром уговорил Углового, они перестали работать.Jasmine httpBackend-связанные тесты, поврежденные при обновлении Angular 2.21 to 2.25

Предположим, что у меня есть что-то вроде этого в моем Жасмин тест:

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

и на последней строке, это было совершенно нормально до того, я получаю:

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 

Кроме того, у меня есть обычная конфигурация для обертывания тестов:

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

, который теперь начал генерировать следующую ошибку:

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 

Я ценю некоторые рекомендации, как заставить все работать снова. В последнее время произошли какие-либо изменения в тестировании httpBackend?

+0

У меня аналогичная проблема с httpBackend.flush() и $ объем $ применяется(). Я не получаю '$ digest уже в процессе', но я получаю 'TypeError: undefined не функция', когда я вызываю любой из указанных угловых методов в тестах жасмина в 1.2.25, но не в Angular 1.2.22. –

+0

Можете ли вы опубликовать немного больше о своем тесте? Ошибка «$ digest уже выполняется» происходит, если вы вызываете $ scope. $ Применяются не в том месте. Во-первых, кажется, что вы тестируете, может быть, ошибка в тестируемом коде? – Nico

+6

Проблема, я думаю, в том, что версия угловатых макетов должна быть такой же, как и угловатой, так же как вы улучшили угловое издевательство? – laurent

ответ

5

Для тех, кто застрял со старым углом и не может обновиться в этой точке по какой-то причине, here - отличная статья, которая объясняет, что происходит и как решить проблему.

Резюмируя -

Проблема происходит потому, что как $httpBackend.flush() и $httpBackend.verifyNoOutstandingExpectation() ошибочно пытаются сделать дайджест. Очевидно, что внутренняя (от verifyNoOutstandingExpectation() вызовов) терпит неудачу. К счастью, мы можем поручить это не выполнять переваривать - отмечают false параметр:.

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

Решено: Угловые матки должны были быть обновлены вручную (не используя беседку ..) в этой точке.

Смежные вопросы