Ich lerne Angular 2 mit Karma zu testen und habe mich über einige Punkte im Code gefragt, die ich nicht verstanden habe. Nachdem die TestBed
"Mock-Modul" konfiguriert ist, läuft der folgende Code:mockBackend = getTestBed(). Get (MockBackend) ;?
mockBackend = getTestBed().get(MockBackend);
Was macht das? Ich fand die folgende Erklärung in einem anderen Artikel: "erhält einen Verweis auf das Pseudo-Backend, so dass wir mit gefälschten Daten antworten können, wenn es mit Http.get geholt wird", aber ich sehe nicht, warum ich es "holen" muss, isn Ist es schon da vom Import {MockBackend, MockConnection} from '@angular/http/testing';
? Oder bekommt das Modul die Methode irgendwie?
Ich benutze es später wie so ... und immer noch nicht verstehen, warum ich es auf den Prüfstand anbringen musste:
mockBackend.connections.subscribe(
(connection: MockConnection) => {
connection.mockRespond(new Response(
new ResponseOptions({
body: "lol data"
}
)));
});
Kurz gesagt, die eigentliche Frage ist - was die erste Zeile tut von Code, den ich gepostet habe?
kompletter Code, nur für Kontext:
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();
}));
-Code aus einem tutorial here genommen wird.