2
MockBackendを使用して私のサービスの単体テストを書き留めようとしています。どんな助けもありがとう。 私はこれらのすべてのソリューションを以下にチェックして、私と比較すると、私は本当に大きな違いは見られません。ここで 角2:MockBackendが「未定義」応答を返す
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { SomeObject } from './someObject';
@Injectable()
export class SomeService {
private serviceUrl: string = 'http://localhost:8080/getObjects';
constructor(private http: Http) { }
getObjects() {
return this.http.get(this.serviceUrl)
.map((response) => response.json().content as SomeObject[])
}
}
は私のテストである:ここで
- Test Angular2 service with mock backendは私のサービスです
import { Http, BaseRequestOptions, Response, ResponseOptions } from '@angular/http'; import { TestBed, tick, fakeAsync, inject } from '@angular/core/testing'; import { MockBackend } from '@angular/http/testing'; import { SomeService } from './some.service'; import { SomeObject } from './someObject'; describe('SomeServiceTest',() => { let stubData: SomeObject[] = [ new SomeObject(1, "Title") ]; beforeEach(() => { TestBed.configureTestingModule({ providers: [ SomeService, MockBackend, BaseRequestOptions, { provide: Http, useFactory: (backend: MockBackend, options: BaseRequestOptions) => { return new Http(backend, options); }, deps: [MockBackend, BaseRequestOptions] } ] }); }); it('should fetch data', inject([SomeService, MockBackend], fakeAsync((service: SomeService, mockBackend: MockBackend) => { let res: SomeObject[]; mockBackend.connections.subscribe(c => { expect(c.request.url).toBe('http://localhost:8080/getObjects'); c.mockRespond(new Response(new ResponseOptions({ body: JSON.stringify(stubData) }))); }); service.getObjects().subscribe((response) => { console.log("response :: " + JSON.stringify(response)); // this is where I am seeing undefined res = response; }); tick(); expect(res[0].name).toBe('Title'); // this returns an exception TypeError: Cannot read property '0' of undefined }))); });
を助ける希望。コンテンツSomeObjectのは[]')(response.json ''にそれを解決しました。 私が非同期呼び出しを処理する 'tick()'と一緒に 'fakeAsync'を使用しているのを見れば、あなたが提案した2番目の修正は本当に問題ではありません。 しかし、私はこの答えを正しいものとして受け入れます。 – Sayantan
ああ、私は将来の参照のために私の答えを更新するよ!私は喜んで助けてくれました。 –
ありがとうダニエル!!目の第二のセットは常に助けます。私は設定に間違いがないことを知っていたし、これらの背後にはいつも愚かな間違いがある;) – Sayantan