私は角2のテスト(カルマ、ジャスミン)を学んでいます。私は既にHTTPサービスのための動作テストを持っています。これは主にthis Semaphore tutorial on services and testingから取得しました。私はいつもの非同期を通じて正しく動作テストを持っている(([MyServiceでは]、...角2は別のサービスを呼び出す非同期サービスを嘲笑します
私の実際のプログラムは以下のように、サービスに包まれたサービスを提供しています。
@Injectable()
export class GlobalsService {
private options: Option[] = [];
error: any;
constructor(private optionService: OptionService) { }
public getGlobals(): void {
let that = this;
this.optionService
.getOptions()
.then(options => that.fillOptions(options))
.catch(error => that.error = error);
}
[SNIP]
optionService.getOptionsを(注入)隠されている、待っている約束を返し、次にglobalService.optionsリストを埋める。globalsService.getGlobals()同期またはその内容の非同期(遅延)を満たす場所で呼び出される。
export class AppComponent implements OnInit {
constructor(private globalsService: GlobalsService) { }
ngOnInit() {
this.globalsService.getGlobals();
}
[SNIP]
私が悩んでいるのは、globalsSerを呼び出す方法です。テストコンテキストでvice.getGlobals()。私はasync()を通してそれを呼び出すと思います。私のモックOptionServiceがある
は、これまでのところ:
@Injectable()
export class MockOptionService {
constructor() { }
getOptions(): Promise<Option[]> {
let options: Option[] = [
{ id: 'NY' } // truncated property list
];
return Promise.resolve(options);
}
}
私はそれを介してコールすることを計画しています:
it('should get Option objects async',
async(inject([GlobalsService, MockOptionService], (globalsService: GlobalsService, optionService: OptionService) => {
globalsService.getGlobals()
.then(() => {
expect(globalsService.getOptions().length).toBe(1);
});
をしかし、私の "スマート" プログラマーエディタ(SublimeText)は、その「プロパティ 'と言います'' void '型には存在しません。非同期(インジェクトまたはちょうどダンプ()を使用する必要があるかどうかわかりません)
コメント、誰?
ありがとう、 Jerome。
。私の答えは以下を見てください。 –