1

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

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

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

我曾希望做这样的事情:

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

test.each然后在此处和应用程序中使用模板文字。然而,这似乎是不可能的?

4

1 回答 1

2

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

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}`);
});
于 2019-12-11T06:29:09.593 回答