是否有一种方法可以在运行时找出是否通过玩笑来模拟模块?
由于正常需要模拟模块,因此代码得以执行(如此处:jest module executed even when mocked
我们之所以需要这样做,是因为在未设置强制性环境变量的情况下,我们对每个文件进行了早期检查,从而导致测试失败,即使模块被模拟也是如此。
if (!process.env.SOME_ENV) {
throw new Error(`Mandatory environment variable 'SOME_ENV' not set`)
}
我们正在寻找这样的东西:
if (!process.env.SOME_ENV && utils.isNotMocked(this)) {
throw new Error(`Mandatory environment variable 'SOME_ENV' not set`)
}
其中utils.isNotMocked(this)
是魔术函数,用于检查模块当前是否被模拟。
答案 0 :(得分:0)
如@jonrsharpe所述,通常不希望软件能够区分它是否处于测试状态。这意味着,您可能在任何模拟框架中都找不到想要的功能。此外,提供这种功能可能会存在更多根本性的问题,因为您可能有混合的测试场景,其中某些测试用例使用了模拟类的对象,而其他测试用例使用了原始类的对象。 / p>
由于您将早期退出机制用作代码中的常规模式,如下所述:为该检查创建库函数怎么样-然后可以在测试过程中将其再次加倍,以便在这种情况下该函数不会扔?