【发布时间】:2021-10-09 02:51:30
【问题描述】:
我正在尝试模拟导入 @env 的东西,以便我可以测试值的不同组合。但是,我不想更改从@env 读取的现有方法以传入变量。
// env.d.ts
declare module '@env' {
export const APP_ROUTE_NAME: string;
}
这是我的尝试
import env from '@env';
jest.mock('@env');
describe("Determine initial routes", ()=> {
it("defaults",()=>{
// does not work because it is read only
(env as jest.Mocked<typeof env>).APP_ROUTE_NAME = null
})
})
【问题讨论】:
-
根据环境变量测试计算值的逻辑。
-
对,但同样:这是一个已解决的问题。使用dotenv 并依赖于它完全按照它应该的方式解析值的事实?像这样的库的全部意义在于它坚如磐石,你知道它可以工作,你不需要测试“环境解析”,而是可以专注于测试你自己的代码。跨度>
-
你认为我正在测试 dotenv。我不是在尝试测试我的配置逻辑。因此,我为什么要嘲笑 env。
-
有点但没有:为什么要模拟任何东西?只需为 jest 设置一个 单独的 jest.env 文件,并将其作为第一次调用加载到测试文件中,并加载任意数量的其他文件(例如来自
./testing/environments),如果您需要对 "如果特定的环境变量不同”。 -
您没有提供
@env,只提供了它的类型。
标签: javascript typescript jestjs dotenv