2
Angularアプリケーション用のテストをいくつか作成しようとしています。私は実際にサーバーを呼び出さないようにメソッドをモックしたいと思います。AJAX呼び出しを行うメソッドをモックするにはどうすればよいですか?
は、ここに私のgrid.service.tsの内側に私の方法である:
loadAccountListPromise(id: string) {
let promise = new Promise((resolve, reject) => {
this.http.get(`${this.baseUrl}`)
.toPromise()
.then(
(data) => {
this.results = this.formatData(data.json());
resolve(this.results);
},
(msg) => {
reject(msg);
}
);
});
return promise;
}
は、これまでのところ私は、公式の角度のテストガイド次のようなものを書いて試してみました。私が持っている私のgrid.service.spec.tsで:
it('loadAcountListPromise should return Promise',() => {
let someHttp;
spyOn(myInnergridService, 'loadAccountListPromise').and.callThrough();
myInnergridService.loadAccountListPromise(someHttp).then(
(response) => { expect(response).toBe(jasmine.any(Promise));
});
});
ここで私はこの方法をスパイしていますが、.callThough()
を呼び出すことによって、私は、実際の実装を使用していますので、サーバーへの実際のAJAX呼び出しを行います。私はこれを避け、テスト目的でGET要求を偽造したいと思います。これはどうすればいいですか?
ああ、キーワードをインポートするには、 '@ angle/http'の 'import {HttpModule、Http、Response、ResponseOptions、RequestOptions、Headers、XHRBackend、RequestMethod}; ' – trichetriche
2番目のインポート(申し訳ありませんが、私はそれを明確にするために別々のコメントを書いています): 'import @ MockBackend、MockConnection} from' @ angular/http/testing '; ' – trichetriche
ありがとうございますが、これは少しでも大変です。あなたが' .method'を呼び出すと、これは私の 'loadAccountListPromise()'メソッドです。 '(RequestMethod.Get、 'params/search')とは何ですか? 'RequestMethod'も私のメソッドですか?また、私はどのように値の型をテストするのだろうか?私は上記の仕様はもう適用されないと思います:( – MadCatm2