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

Che*_*Tai 6 javascript testing jestjs

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

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

这是目录结构:

??? index.js
??? test
    ??? index.test.js
    ??? config.js
Run Code Online (Sandbox Code Playgroud)

索引.js

const readRootConfig = function() {
  const dir = process.cwd();
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
Run Code Online (Sandbox Code Playgroud)

然后我用 jest 来测试这个文件。

index.test.js

import readRootConfig '../index';

it('test config', () => {
  readRootConfig();
})
Run Code Online (Sandbox Code Playgroud)

运行测试后,consoledir是./(实际输出的是绝对路径,我在这个demo中只显示了相对路径)

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

是否有任何配置可以让 jest 使用test file folderprocess.cwd()文件夹?

我认为解决方案之一是dir path作为参数传递,例如:

索引.js

const readRootConfig = function(dir) {
  console.log(dir); // show the working dir
  const config = require(`${dir}/config.js`);
}
Run Code Online (Sandbox Code Playgroud)

但是我不太喜欢这个解决方案,因为这个方法是为了适应测试。

所以有什么建议吗?谢谢。

小智 4

也许您想制作一个可以知道需要什么文件的模块,您可以使用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`);
}
Run Code Online (Sandbox Code Playgroud)