在我当前的代码中,我使用process.cwd()
获取当前工作目录,然后加载一些文件(如config文件)。
下面我将展示我的代码的概念和我如何测试它。
以下是目录结构:
├── index.js
└── test
├── index.test.js
└── config.js
- 索引. js**
const readRootConfig = function() {
const dir = process.cwd();
console.log(dir); // show the working dir
const config = require(`${dir}/config.js`);
}
然后我用jest来测试这个文件。
- 索引测试js**
import readRootConfig '../index';
it('test config', () => {
readRootConfig();
})
运行测试后,dir的console
为./
(实际输出为绝对路径,我在此演示中仅显示相对路径)
但是我希望dir的输出是./test
。
是否有任何配置使jest使用test file folder
作为process.cwd()
文件夹?
我认为解决方案之一是将dir path
作为参数传递,如下所示:
- 索引. js**
const readRootConfig = function(dir) {
console.log(dir); // show the working dir
const config = require(`${dir}/config.js`);
}
但是我不太喜欢这个解决方案,因为这个方法是为了适应测试。
有什么建议吗?谢谢。
2条答案
按热度按时间tquggr8v1#
也许你想做一个模块,知道什么文件需要它,你可以使用
module.parent
.它是第一个需要这个的模块.然后你可以使用path.dirname
得到文件的目录.所以
index.js
应该是这样的amrnrhlw2#
__dirname
很好地实现了这一点,因为module.parent
现在已从节点v19.6.0
(www.example.com)弃https://nodejs.org/docs/latest/api/globals.html#__dirname