首页 > 解决方案 > 使用 Hapi Lab 在测试之间恢复

问题描述

语境:

我正在使用 Hapi Lab 运行一堆测试。

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

有什么问题:

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

第一个测试总是通过,因为它处理的是“干净”的 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 在测试之间“恢复”原始状态,而不是让同一 JSON 数据实例在不同测试之间泄漏?

标签: node.jstestinghapi

解决方案


我发现解决此问题的一个方便的解决方法是使用节点子进程在其自己的工作人员中运行每个测试。

我添加了一个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来运行这个序列。

每个测试都在一个“干净”的工作人员中运行,没有数据泄漏。


推荐阅读