2014-09-17 16 views
7

Tôi có nhiều thử nghiệm trong Jasmine và Karma dựa trên séc httpmàu HTTP giả mạo HTTP. Khi tôi nâng cấp Angular ngày hôm nay, họ dừng lại để làm việc.Thử nghiệm liên quan đến httpBackend Jasmine bị hỏng khi nâng cấp Angular 2.21 đến 2.25

Giả sử tôi có một cái gì đó như thế này bên trong kiểm tra Jasmine của tôi:

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

và trên dòng cuối cùng, đó là hoàn toàn ok trước đây, tôi nhận được:

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 

Hơn nữa, tôi có cấu hình bình thường để kết thúc kiểm tra:

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

bây giờ bắt đầu phát sinh lỗi sau:

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 

Tôi đánh giá cao một số đề xuất cách làm cho mọi thứ hoạt động trở lại. Có bất kỳ thay đổi nào được thực hiện cho thử nghiệm httpBackend gần đây không?

+0

Tôi có một vấn đề tương tự với httpBackend.flush() và phạm vi $ $ apply(). Tôi không nhận được '$ digest đã được tiến hành', nhưng tôi nhận được 'TypeError: undefined không phải là một chức năng' khi tôi gọi một trong các phương pháp góc trên bên trong các thử nghiệm hoa nhài trong 1.2.25 nhưng không phải trong Angular 1.2.22. –

+0

Bạn có thể đăng thêm một chút về bài kiểm tra của mình không? Lỗi "$ digest already in progress" đang xảy ra nếu bạn gọi $ scope. $ Áp dụng sai địa điểm. Đầu tiên, có vẻ như bạn thử nghiệm là ok, có thể là một sai lầm trong mã thử nghiệm của bạn? – Nico

+6

Vấn đề tôi nghĩ là phiên bản của các mocks góc phải giống với góc cạnh, do đó bạn đã nâng cấp các mock góc? – laurent

Trả lời

5

Đối với những người đang mắc kẹt với Angular cũ và không thể nâng cấp tại thời điểm này vì lý do nào đó, here là một bài đăng tuyệt vời giải thích những gì đang diễn ra và cách giải quyết vấn đề.

Để tóm tắt -

Vấn đề này xảy ra vì cả hai $httpBackend.flush()$httpBackend.verifyNoOutstandingExpectation() nhầm cố gắng làm tiêu hóa. Rõ ràng, bên trong (từ cuộc gọi verifyNoOutstandingExpectation()) không thành công. May mắn thay, chúng tôi có thể hướng dẫn nó không phải để thực hiện tiêu hóa - lưu ý các false tham số:.

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

Giải quyết: Góc-Mocks phải được cập nhật theo cách thủ công (không sử dụng bower ..) tại thời điểm đó.

Các vấn đề liên quan