ich habe folgendes Angular 2 Test:Angular 2 Mock Antwort Arbeits
/* tslint:disable:no-unused-variable */
import { provide } from '@angular/core';
import { MockBackend } from '@angular/http/testing';
import {
Http,
HTTP_PROVIDERS,
Response,
ResponseOptions,
BaseRequestOptions,
ConnectionBackend,
XHRBackend
} from '@angular/http';
import {
beforeEach, beforeEachProviders,
describe, xdescribe,
expect, it, xit,
async, inject
} from '@angular/core/testing';
import { BookService } from './book.service';
describe('Book Service',() => {
beforeEachProviders(() => [
BookService,
HTTP_PROVIDERS,
MockBackend,
BaseRequestOptions,
{ provide: XHRBackend, useExiting: MockBackend },
provide(Http, {
useFactory: function (backend:ConnectionBackend, defaultOptions:BaseRequestOptions) {
return new Http(backend, defaultOptions);
},
deps: [MockBackend, BaseRequestOptions]
})
]);
it('should assign a list of books', inject([BookService, MockBackend, Http], (service, backend, http) => {
var response;
backend.connections.subscribe(c => {
expect(c.request.url).toEqual('/api/books.json');
c.mockRespond(new Response(new ResponseOptions({body: {message: 'thank you'}})));
});
http.get('/api/books.json').subscribe(data => response = data);
expect(response).toEqual({ message: 'thank you' });
}));
});
Der Teil I auf das konzentrieren möchte, ist dies:
it('should assign a list of books', inject([BookService, MockBackend, Http], (service, backend, http) => {
var response;
backend.connections.subscribe(c => {
expect(c.request.url).toEqual('/api/books.json');
c.mockRespond(new Response(new ResponseOptions({body: {message: 'thank you'}})));
});
http.get('/api/books.json').subscribe(data => response = data);
expect(response).toEqual({ message: 'thank you' });
}));
Wenn ich den Test ausführen, erhalte ich:
Expected Response with status: null null for URL: null to equal Object({ message: 'thank you' }).
Denken vielleicht ist es ein asynchrones Problem, änderte ich meine Erwartung zu diesem:
http.get('/api/books.json').subscribe(data => {
expect(data).toEqual({ message: 'thank you' });
});
Aber ich bekomme immer noch die gleiche Fehlermeldung.
Was kann ich tun, damit die Scheinantwort wirksam wird?
hast du das gelöst –
Yup, nur eine Antwort geschrieben. –