node.js - 使用 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 数据实例在不同测试之间泄漏?
解决方案
我发现解决此问题的一个方便的解决方法是使用节点子进程在其自己的工作人员中运行每个测试。
我添加了一个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
来运行这个序列。
每个测试都在一个“干净”的工作人员中运行,没有数据泄漏。
推荐阅读
- python - 如何使用 BeautifulSoup 只选择第 n 个(第 42 个)`p` 标签?
- python - Jupyter 笔记本中的 FileUpload 小部件 - 如何访问上传的文件
- c - 这只能通过循环来解决吗?
- python - 如何在熊猫 DataFrame 中允许重复的列名
- reactjs - 反应免责声明页面
- keras - Resnet 模型参数
- docker - 使用 WhiteSource Renovate 定位特定依赖项
- php - 如何在laravel中合并模型的两个json字段?
- json - 无法使用 Cosmos DB SQL 检索 JSON 值小节的详细信息
- swift - Realm for Swift 可以抵御注入攻击吗?