1

したがって、Typescript/RequireJs/Jasmine を使用していますが、別のモジュールにロードされたモジュールに対してスパイを動作させることができません。

これが私の仕様です:

import { CrmWebApiLib }     from "../../../webresources/allgnt_/scripts/Allgnt.RestLib";
import { TextFormatter }    from "../../../webresources/new_/scripts/script/TextFormatter";

describe("Test", () => {
    it("A Test", () => {
        spyOn(CrmWebApiLib, "create").and.callFake((a, b) => { });

        TextFormatter.test();

        expect(CrmWebApiLib.create).toHaveBeenCalled();
    });

    it("B Test", () => {
        var stub = {
            CrmWebApiLib: {
                create(a, b) { }
            }
        };
        define("../../../webresources/allgnt_/scripts/Allgnt.RestLib", [], stub as any);
        spyOn(stub.CrmWebApiLib, "create").and.callFake((a, b) => { });

        TextFormatter.test();

        expect(CrmWebApiLib.create).toHaveBeenCalled();
    });
});

TextFormatter は次のとおりです。

import { RestLib, CrmWebApiLib }    from "../../../allgnt_/scripts/allgnt.restlib";

export module TextFormatter {
    export function test() {
        CrmWebApiLib.create("A", "Test");
    }
}

「A テスト」でも「B テスト」でも、スパイを機能させることができません。常に実際の実装とエラーを呼び出します。TextFormatter の定義を挿入できるように変更できますTextFormatterが、それは間違っているように感じます。

このような状況で spyOn 呼び出しを機能させるにはどうすればよいですか?

4

1 に答える 1