使用 Hapi Lab 在测试之间恢复

Restore between tests with Hapi Lab

上下文:

我正在使用 Hapi Lab 运行 进行一系列测试。

我还有一组导出模拟 JSON 数据的文件。

问题是什么:

每个测试都将 JSON 文件作为其例程的一部分。

第一个测试总是通过,因为它处理的是 'clean' JSON 数据,而后面的测试有时会失败,因为前一个测试在前一个测试时修改了 JSON测试 运行.

类似地,如果我 运行 一次专门测试一个文件,输出就没问题。而如果我尝试测试一个包含多个测试的目录,我会因为格式错误 JSON.

而失败
npm run lab /test-directory/test1.js    // Works fine
npm run lab /test-directory/test2.js    // Works fine

npm run lab /test-directory    //Fails

问题是什么:

是否有方便的方法让 Lab 在测试之间 'restore' 原始状态,而不是让相同的 JSON 数据实例在不同测试之间泄漏?

我发现这个问题的一个方便的解决方法是 运行 使用 node child processes.

在自己的 worker 中进行每个测试

我添加了一个文件 run-tests-sequentially.js 依次调用测试:

const { promisify } = require('util');
const { exec } = require('child_process');

const execAsync = promisify(exec);

(async () => {
  console.log('Running test1...');
  const { stdout: test1Output } = await execAsync('npm run test:integration /test-directory/test1.js');
  console.log('Completed test1...');
  console.log(test1Output);

  console.log('Running test2...');
  const { stdout: test2Output } = await execAsync('npm run test:integration /test-directory/test2.js');
  console.log('Completed test2...');
  console.log(test2Output);
})();

然后我调用 node ./run-tests-sequentially.js 到 运行 序列。

在 'clean' 工作人员中进行的每个测试 运行,没有数据泄漏。