Tôi muốn chuyển một số yêu cầu http của mình thông qua và không thử chúng trong thử nghiệm đơn vị của tôi, nhưng khi tôi cố gắng gọi phương thức passThrough(), lỗi của phương thức bị thiếu được ném:
"TypeError: Object # has no method 'passThrough'".
Có ai biết cách khắc phục không?
Có mã của tôi:
'use strict';
describe('Controller: MainCtrl', function() {
// load the controller's module
beforeEach(module('w00App'));
var scope, MainCtrl, $httpBackend;
// Initialize the controller and a mock scope
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('http://api.some.com/testdata.json').passThrough();
scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope
});
}));
});
Như đã giải thích trong [tài liệu] (http://docs.angularjs.org/api/ngMock.$httpBackend): * Trong quá trình kiểm tra đơn vị, chúng tôi muốn thử nghiệm đơn vị của mình chạy nhanh và không có phụ thuộc bên ngoài vì vậy chúng tôi không muốn gửi yêu cầu XHR hoặc JSONP tới máy chủ thực *. Dịch vụ $ httpBackend được sử dụng trong các bài kiểm tra đơn vị không thể đi qua. Tuy nhiên, $ httpBackend được sử dụng bởi kiểm thử end-to-end có thể. –
Điều này làm cho các chỉ thị thử nghiệm với các mẫu bên ngoài khó khăn hơn cần thiết, bạn có nghĩ vậy không? – SimplGy