テストで async/await を使用してこのようなことができるかどうか疑問に思いました。
通常の約束を使用すると、たとえば、このような単体テストで約束をモックできます。
class Foo {
fn() {
this.someService.someFn().then((data) => this.data = data);
}
}
describe("something", function() {
beforeEach(function() {
this.instance = new Foo();
// Can this part be mocked out with the same idea, when someService.someFn is async fn
this.instance.someService = {
someFn: function() {
return {
then: function(cb) {
cb("fake data");
}
}
}
}
this.instance.fn();
});
it("a test", function() {
expect(this.instance.data).toBe("fake data");
});
});
(約束を上書きすれば、フラッシュなどに対処する必要はありません。) しかし、今、 fn() がこれに変わるとき
class Foo {
async fn() {
try {
this.data = await this.someService.somefn();
} catch() {
}
}
}
beforeEach で行った上書きは、もう機能しません。ここでの私の質問は... async/await コード スタイルを使用した promise の上書きで行ったようなことを行うことはできますか?
ここでのアイデアは、「someService」のように、単体テストを行っている関数が使用する外部依存関係をモックアウトしたいということです。その特定の単体テストでは、 someService.someFn が適切に機能することを期待しており、その応答をモック化できます。他のテストでは、「someFn」の有効性を確認します。