Javascript 如何确定JEST是否正在运行代码?
我正在我的react原生项目上创建一个JS测试。我专门将firebase用于react native,在其中,如果JS正在运行我类的代码,我想用mockfirebase实例替换firebase实例 例如,我有如下的类设置Javascript 如何确定JEST是否正在运行代码?,javascript,firebase,react-native,mocking,jestjs,Javascript,Firebase,React Native,Mocking,Jestjs,我正在我的react原生项目上创建一个JS测试。我专门将firebase用于react native,在其中,如果JS正在运行我类的代码,我想用mockfirebase实例替换firebase实例 例如,我有如下的类设置 import firebase from 'react-native-firebase'; class Database() { /// use the firebase instance } 我想检查jest是否是正在运行的环境,然后用适当的mock类替换导入行。j
import firebase from 'react-native-firebase';
class Database() {
/// use the firebase instance
}
我想检查jest是否是正在运行的环境,然后用适当的mock类替换导入行。jest设置了一个名为jest\u WORKER\u ID的环境变量,因此您可以检查是否设置了:
function areWeTestingWithJest() {
return process.env.JEST_WORKER_ID !== undefined;
}
我还看到,如果未设置NODE_ENV,jest CLI会将其设置为值“test”。这可能是另一种检查方法。我通常在shell上全局设置
节点\u ENV=development
。这对我很有用:
typeof jest !== 'undefined'
(请注意,
global.jest
和'jest'在global
中不起作用,因为这似乎不是一个全局变量,只是一个在所有模块上都可用的值,就像节点的要求
或\u文件名
)您可以将参数添加到global
中,例如global.isJest,并在前端检查是否定义了该参数,但是NODE_ENV是。如果你下一步。js的导出功能JEST_WORKER_ID
也将在生产中定义,因为它似乎使用JEST WORKER模块。如果它从未更改,为什么每次都要对它进行评估?最好将其存储在常量中。在我的React本机设置中,typeof jest!='未定义的“
在iOS模拟器中运行时为false(即,它已定义),连接到调试器,因此我必须检查工人ID,如另一个答案中所示。