【发布时间】:2022-01-21 17:41:45
【问题描述】:
我有一个装饰器函数,可以从环境变量中获取一些数据。所以一开始我检查这个环境变量是否被设置。
function dec(target: Object, key: string | symbol, descriptor: PropertyDescriptor) {
if (!process.env.NAMESPACE) {
throw new Error('The environment variable NAMESPACE was not set.');
}
...
}
然后我将这个装饰器用于一个函数。
@dec
function foo() {
...
}
我尝试使用 jest 单元测试来测试函数 foo()。如果我没有在笔记本电脑上设置 NAMESPACE 变量,则测试失败。如果我尝试在beforeAll 部分进行设置,它仍然会失败。不知何故,函数dec 的调用早于beforeAll。如何在调用dec之前在测试中设置NAMESPACE变量?
【问题讨论】:
-
您不应该在装饰器函数中读取环境变量。将其作为配置传递。这样,在测试中模拟也将变得更加简单。整体设计更好。
标签: typescript jestjs