1

現在、ジャスミンを使用して typescript 関数をテストしようとしています:

//AB.ts

export async function A() {
}
export async function B() {
    A();
}

A をモックアウトして関数 B を単体テストしようとしています。A が呼び出されているかどうかを確認したいです。ここに私が持っているものがあります:

//AB.spec.ts
import * as AB from './AB'

describe('AB has a function B that ', () => {
    it('calls A', async () => {
        let ASpy: jasmine.Spy;
        ASpy = spyOn(AB, 'A').and.returnValue(Promise.resolve({}));
        await AB.B();
        expect(ASpy).toHaveBeenCalled();
    });
});

このテストを実行すると、ASpy が呼び出されなかったというメッセージが表示されます。しかし、さらに調査したところ、A 関数が確実に呼び出されていることがわかりました。A 関数が呼び出されたようですが、関数用に作成したモックはトリガーされませんでした。A 関数を別のファイルに実装し、それを B で呼び出し、AB.spec.ts でそれをモックしようとしました。そのシナリオでは、ASpy が呼び出されたことを期待どおりに判断して、テストに合格します。2 つの関数を同じファイルにまとめてテストに失敗する理由はわかりませんが、それらを別々のファイルに入れるとテストに合格します。とにかく、早く誰かから連絡が欲しいです!関数を別々のファイルに入れても問題ありませんが、将来のプロジェクトではできるだけ避けたいと思っています。

4

2 に答える 2