したがって、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 呼び出しを機能させるにはどうすればよいですか?