我正在使用hapi的lab+code测试框架。我需要覆盖全局要求函数。我使用的是嘲弄,但我也试图手动覆盖它,没有任何运气。似乎实验室在沙箱环境中执行所有代码,其中提供了一个特殊的需求函数,而不是全局函数。如何正确地覆盖实验室框架上的全局需求函数?
提前谢谢。
发布于 2018-02-09 10:21:48
我最后使用了丙氧奎尔,它提供了一种清晰和声明性的方式来模拟其他模块所需的模块,而不是创建或覆盖任何全局。基本上,您可以创建一个require函数,您可以使用它来代替普通的require函数来要求您想要测试的模块。然后,当该模块要求您声明为模拟的东西时,包装要求将提供模拟而不是原始包。它的优点是您可以定义部分模型,因此它将返回一个代理,该代理将模拟的方法作为模型,其余的方法将被转发到原始包。
下面是一个用法示例
// Mockups
const ProxyQuire = require( 'proxyquire' );
const mockupPaths = {
'mongodb': require( './__mocks__/mongo' ),
'fs': {
readFileSync( path ) {
if ( path !== 'PATH/TO/CERTS' ) {
return Fs.readFileSync( path );
}
return 'A VERY LONG STRING THAT LOOKS LIKE A CERTIFICATE!!';
}
}
};
// What we want to test
const Connect = ProxyQuire( '../src/db-connect.js', mockupPaths );https://stackoverflow.com/questions/42551833
复制相似问题