0
私はユニットテストのためにバックエンドサービスを模擬しようとしています。 ":( 'の[0] .ID RES' を評価)オブジェクトされていない未定義例外TypeError"TypeError:undefinedはオブジェクトではありません( 'res [0] .id'を評価しています)
describe('FreightService',() => {
beforeEachProviders(() => [
BaseRequestOptions,
MockBackend,
FreightService,
provide(Http, {
useFactory: (backend: ConnectionBackend,
defaultOptions: BaseRequestOptions) => {
return new Http(backend, defaultOptions);
}, deps: [MockBackend, BaseRequestOptions]}),
]);
describe('getFreightById',() => {
it('retrieves using the Freight ID',
inject([FreightService, MockBackend], fakeAsync((freightService, backend) => {
var res;
expectURL(backend, 'app/freight/getById?id=4');
freightService.getFreightById(4).then((_res) => {
res = _res;
})
tick();
expect(res[0].id).toBe(4);
}))
);
});
// sets up an expectation that the correct URL will being requested
function expectURL(backend: MockBackend, url: string) {
backend.connections.subscribe(c => {
expect(c.request.url).toBe(url);
let response = new ResponseOptions({
body: '[{"id": "4"}]' });
c.mockRespond(new Response(response));
});
}
})
私はエラーを取得しています:以下のコード・サービスは、以下の
getFreightById(id: number): Promise <Freight[]> {
let searchParams = new URLSearchParams();
searchParams.set('id', id.toString());
return this.http.get("app/freight/getById", {
search: searchParams
})
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
私のジャスミンユニット・テスト・ケースです。どんな考えがここに間違っていますか?助けてください!!
これは、res [0]が定義されていないので、オブジェクトではないので、プロパティ** id **に未定義です。 –
"{body: '[{" id ":" 4 "} ] '}は返されていませんか? –