gpt4 book ai didi

javascript - 在 Jest 中动态生成测试

转载 作者:行者123 更新时间:2023-11-29 23:28:28 27 4
gpt4 key购买 nike

我正在寻找一种在 Jest 中生成测试并运行它们的方法。我正在测试一个 API,测试用例是从 CSV 文件导入的,测试是从该文件生成的。

目前我得到的是一个参数数组,我想从中生成测试并运行它们。这就是我看到它的工作方式:

let testFn =  (testName, request, expected) => it(test.testName, (request, expected) => {
return new Promise((resolve, reject) => {
http.post(request, (err, res) => {
if (err) {
reject(err);
} else {
resolve(res);
}
})
}).then((res) => {
expect(res.result).toBe(expected['result']);
return response;
})
});

上面的代码是我的测试函数。如我所见,应该调用它来执行测试。它根据 3 个参数生成测试:

  • testName 是测试的名称,显示在控制台中
  • request 是发送给 API 的请求
  • expected 是预期的结果。

结构始终相同:res.result 应该是参数 expect.

我从 CSV 中获得的带有测试的数组元素的示例是:

const oneTest = {
testName: 'the request should return 10',
request: {
input: 10
},
expected: {
result: 10
}
}

在这里,我们遍历测试数组并运行所有测试。这是我无法完成的部分。

for (let test in tests) {
testFn.apply(this, [test.testName, test.request, test.expected])
}

由此产生的预期结果是我将从阵列生成所有测试,运行并在控制台中显示结果。

我希望我对我的问题的解释足够清楚,但如果不是这样,请不要犹豫问(毕竟你是在帮助我!)

PS:这是我第一次使用 Jest,所以我可能以错误的方式假设了很多事情。如果你看到一些完全愚蠢的东西,请注意,我很乐意学习! :)

最佳答案

我认为这不需要 Mocha。也许诀窍是您不必在测试中嵌套测试生成函数,您只需在顶层运行它:

这是一个完整的文件,其中包含两个失败的测试和一个通过的测试。

// demo.test.js
const tests = [1, 2, 3];

tests.forEach(value =>
it(`Expects ${value} to equal 2`, () => expect(value).toEqual(2))
);

及其输出:

Test Suites: 1 failed, 1 total
Tests: 2 failed, 1 passed, 3 total
Snapshots: 0 total
Time: 0.712s
Ran all test suites related to changed files.

关于javascript - 在 Jest 中动态生成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com