我正在编写一个单元测试用例,问题在链接How to stub/mock submodules of a require of nodejs using sinon
中提到当我包含要求
时 const index=require('./index.js');
里面有一个库需要
const library= require('./library.js');
library.js文件有一个require,它读取config.json文件(这个配置文件也需要在index.js上面),如下所示
const readConfig = require('read-config');
const config = readConfig('./config.json');
我已尝试过多种方式,如上所述,但我失败了
const stubs = {
'./library': function (response) {
assert.equal(some, null);
return 'Some ' + argument;
},
'../library1.js': {
function(paths, opts){
var config='./config.json'
return config;
}
},
}
const index=proxyquire('./index.js',stubs)
当我运行我的单元测试用例时,我仍然收到以下错误
throw configNotFound(configPath);
^
ReadConfigError: Config file not found: ./config.json
我想知道代码的哪一部分我错过了代码抛出错误
我正在尝试编辑index.js以及使用以下代码读取配置的所有相关文件
var path = require('path');
var pathToJson = path.resolve(__dirname, '../config.json');
// Load config
var config = fs.readFile(pathToJson , 'utf8', function (err, data) {
if (err) throw err;
config = JSON.parse(data);
});
这里的挑战是我无法更改节点代码
答案 0 :(得分:0)
您的问题很可能是路径解析。如果./config.json
与您从(process.cwd()
)运行Node的位置相关,那么它就可以正常工作。如果它与您的库模块相关,那么您可以执行以下操作:
// Works for JS and JSON
const configPath = require.resolve('./config.json');
// Works in general
const configPath = require('path').join(__dirname, 'config.json');
// Then
const readConfig = require('read-config');
const config = readConfig(configPath);
如果不了解您的项目布局以及如何启动应用程序,情况就很难说。