根据问题标题,我有一个模块应该只在测试中使用,我如何才能防止它在生产中使用?
最佳答案
看起来您正试图模拟NodeJS
中的一些模块以获得测试用例。
与其有条件地导入,不如有条件地导出真实或模拟对象。
import mockModule from './mockModule';
import realModule from './realModule';
const exported = (CONDITION) ? mockModule : realModule;
export default exported;
另外,您可能希望为您的用例导出一些空对象,而不是
mockModule
。类似于:const exported = (CONDITION)? {} : realModule;
CONDITION
根据某个环境变量或您的测试套件来检查测试是否正在运行。例如,对于摩卡,你可以使用:var isInTest = typeof global.it === 'function';
来源:How to detect if a mocha test is running in node.js?
此外,使用
require
可以有条件地导入模块:if (CONDITION) {
const foo = require('foo');
}