Я изучаю тестирование Angular 2 с кармой и задавался вопросом о некоторых моментах кода, которые я не понимал. После того, как «фиктивный модуль» TestBed
настроен, следующий код работает:mockBackend = getTestBed(). Get (MockBackend) ;?
mockBackend = getTestBed().get(MockBackend);
Что это делать? В следующей статье я нашел следующее объяснение: «получает ссылку на фальшивый бэкэнд, поэтому мы можем отвечать фальшивыми данными, когда он извлекается с помощью Http.get», но я не понимаю, почему мне нужно «получить его», isn 't это уже там из импорта {MockBackend, MockConnection} from '@angular/http/testing';
? Или модуль каким-то образом получает метод?
Я использую его позже, как так ... и до сих пор не понимает, почему я должен был прикрепить его к испытательному стенду:
mockBackend.connections.subscribe(
(connection: MockConnection) => {
connection.mockRespond(new Response(
new ResponseOptions({
body: "lol data"
}
)));
});
Короче говоря, реальный вопрос - то, что делает первую строку кода, который я опубликовал?
Полный код, только для связи:
import { TestBed, getTestBed, async, inject } from '@angular/core/testing';
import { Headers, BaseRequestOptions, Response, HttpModule, Http, XHRBackend, RequestMethod} from '@angular/http';
import {ResponseOptions} from '@angular/http';
import {MockBackend, MockConnection} from '@angular/http/testing';
import {FooHttpService} from '../../services/foo-service.service.ts';
describe('My Service Making an Http Call',() => {
let mockBackend: MockBackend;
beforeEach(async(() => {
TestBed.configureTestingModule({
providers: [
FooHttpService,
MockBackend,
BaseRequestOptions,
{
provide: Http,
deps: [MockBackend, BaseRequestOptions],
useFactory:
(backend: XHRBackend, defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
}
}
],
imports: [
HttpModule
]
});
mockBackend = getTestBed().get(MockBackend);
TestBed.compileComponents();
}));
Код взят из tutorial here.