Javascript 获取测试文件目录的jest process.cwd()

Javascript 获取测试文件目录的jest process.cwd(),javascript,testing,jestjs,Javascript,Testing,Jestjs,在我当前的代码中,我使用process.cwd()获取当前工作目录,然后加载一些文件(如配置文件) 下面我将展示我的代码的概念以及如何测试它 这是目录结构: ├── index.js └── test ├── index.test.js └── config.js index.js const readRootConfig = function() { const dir = process.cwd(); console.log(dir); // show the wo

在我当前的代码中,我使用
process.cwd()
获取当前工作目录,然后加载一些文件(如配置文件)

下面我将展示我的代码的概念以及如何测试它

这是目录结构:

├── index.js
└── test
    ├── index.test.js
    └── config.js
index.js

const readRootConfig = function() {
  const dir = process.cwd();
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
import readRootConfig '../index';

it('test config', () => {
  readRootConfig();
})
const readRootConfig = function(dir) {
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
然后我使用jest来测试这个文件

index.test.js

const readRootConfig = function() {
  const dir = process.cwd();
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
import readRootConfig '../index';

it('test config', () => {
  readRootConfig();
})
const readRootConfig = function(dir) {
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
运行测试后,dir的控制台
/
(实际输出是绝对路径,我在这个演示中只显示相对路径)

但是我希望dir的输出是
/test

是否有任何配置使jest使用
测试文件文件夹
作为
进程.cwd()
文件夹

我认为解决方案之一是将pass
dir path
作为参数,如:

index.js

const readRootConfig = function() {
  const dir = process.cwd();
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
import readRootConfig '../index';

it('test config', () => {
  readRootConfig();
})
const readRootConfig = function(dir) {
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
但我不喜欢这个解决方案,因为这个方法是为了适应测试


有什么建议吗?谢谢。

也许你想制作一个能知道需要什么文件的模块,你可以使用
module.parent
。这是第一个需要这个模块的模块。然后可以使用
path.dirname
获取文件的目录

所以
index.js
应该是这样的

const path = require('path')

const readRootConfig = function() {
  const dir = path.dirname(module.parent.filename)
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}