bounty将在4天后过期。回答此问题可获得+50声望奖励。GROVER.希望吸引更多人关注此问题。
我在Express应用中有一个自定义的全局作用域函数foo
。当运行我的Jest test
脚本时,这个函数被捕获为undefined
。因此,使用它们的任何测试都会失败。index.d.ts
:
declare global{
function foo(): string;
}
export {};
src/Utils/index.ts
:
global.foo = function foo(){
return "bar";
};
src/Modules/Example.module.ts
:
export const test = () => {
// This will return bar, as expected, when developing.
// A reference error will only be thrown when running npm test.
return foo();
};
src/Modules/Example.test.ts
:
import { test } from "./Example.module";
describe("modules/example", () => {
describe("test", () => {
it("returns bar", () => {
let bar = test();
expect(bar).toBe("bar");
});
});
});
尽管这在开发时不是问题,但此测试会导致错误:
ReferenceError: foo is not defined.
export const test = () => {
return foo();
^
...
};
1条答案
按热度按时间elcex8rz1#
您可以指定
src/Utils/index.ts
作为安装文件,Jest将在运行测试之前加载并执行它。您可以将它添加到您的Jest配置文件中(如果您没有配置文件,也可以创建一个):假设一个CJS格式的Jest配置jest.config.js:
如果您使用JSON或TypeScript Jest配置文件,它看起来会稍有不同。
但是我不推荐使用全局变量(即使你经常使用它们)。有了一个正确的代码编辑器设置,从另一个文件导入函数是很容易的。