私は非同期$リソースサービスをAngularでテストしようとしています。最初に、$リソースを嘲笑したくないことに注意してください。実際に結果を得てテストしたいと思っています。
基本的に私のgetCountriesメソッドは、Angularの$リソースを使って国の配列を返します。私のスペックで
方法
getCountries(): any {
var countries = this.$resource(
this.apiEndpoint.baseUrl,
{
'get': {
method: 'GET', isArray: false
}
});
return countries;
}
私はジャスミンの完了()メソッドを実行する場所とのトラブルを抱えています。コードのコメントを読んでください。
スペック
describe(module',(): void => {
var one;
var SelfRegistrationResourceBuilder;
beforeEach((): void => {
angular.mock.module(
'BuilderModule',
'ngResource'
);
inject(
['Builder', (_SelfRegistrationResourceBuilder _: ISelfRegistrationResourceBuilder): void => {
SelfRegistrationResourceBuilder = _SelfRegistrationResourceBuilder_;
}]);
});
describe('getCountries',(): void => {
beforeEach((done) => { //done is a parameter in beforeEach
SelfRegistrationResourceBuilder.getCountries().get(
(value: any) => {
console.log("no error");
one = "aValue";
done(); //Do I have to call done() here
}, (error: any) => {
console.log("error");
one = "aValue";
//done(); What about here
})
//done(); ..or here
});
it("should...", (done) => {
expect(one).toBe("aValue");
//done(); and here?
});
});
});
だから私の問題は、私は自分のコードを実行したとき、私はどちらかのエラーがこの問題のタイトルに記載された取得または私が行っている(で遊んであればということのようです)メソッドIコールすると、 "one"という名前の変数は定義されていません。したがって、成功とエラーのコールバックが呼び出されなかったことを意味します。また、console.log()がコンソールに出力しないので、成功とエラーのコールバックが呼び出されないことも証明できます。
最後にブラウザの開発者ツールのネットワークセクションをチェックすると、サーバーへのリクエストが表示されません。誰かが私を助けようとしていてもらえますか?done()の呼び出しを除いて、私が考えているものはほとんどあります。
おかげ
おかげであなたの助けが、それでも私に同じエラーを与え、私の「1」の変数はまだ – Archmede
定義されていませんが、これはすべて私のコールバックは、[この](HTTP読ん – Archmede
と呼ばれることはありません飽きないために発生していることをやって: //stackoverflow.com/questions/30346214/run-angularjs-resource-tests-without-mocking-responses)これは不可能かもしれないと私に伝えます – Archmede