我可以从 test.each 标记的模板文字中为另一个上下文捕获测试吗?

Can I capture tests from test.each tagged template literals for another context?

使用 Jest 的 jest.each 功能编写的数百个验证计算的自动化测试需要以另一种更清晰的形式呈现给决策者。一个典型的测试套件会像这样开始(示例编号):

describe('Drug 1', () => {
test.each`
weight  | vial   | expectedMg | expectedMl  | clinicalCaseNumber
${140}  | ${250} |       |         | ${'I13'}
${140}  | ${500} |       |         | ${'I14'}

我想从正在测试的 React 应用访问我的 *.test.js 文件中的测试数据,以便获得许可的用户可以查看 运行.

的自动化测试

我曾希望做这样的事情:

export const DRUGS = {};
DRUGS['Drug 1'] = `
    weight  | vial   | expectedMg | expectedMl  | clinicalCaseNumber
    ${140}  | ${250} |       |         | ${'I13'}
    ${140}  | ${500} |       |         | ${'I14'}

然后在此处和应用程序中使用带有 test.each 的模板文字。不过,这好像不太可能吧?

您可以创建一个单独的脚本作为入口点

package.json
{
  "scripts": {
    "test": "jest",
    "dump": "node scripts/dump.js",
    "posttest": "npm run dump"
  }
}

您可以重复使用 jest-each 来定义全局测试函数并创建所需的输出

scripts/dump.js
const bindEach = require('jest-each').bind;
const glob = require('glob');

global.describe = (desc, cb) => {
  console.log(desc);
  cb();
};

const test = (desc, cb) => {
  console.log(desc);
};

test.each = bindEach(test);

global.test = test;

glob.sync('**/?(*.)+(spec|test).[tj]s?(x)').forEach((testFile) => {
  require(`./${testFile}`);
});