使用 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' 工作人员中进行的每个测试 运行,没有数据泄漏。
上下文:
我正在使用 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' 工作人员中进行的每个测试 运行,没有数据泄漏。