【发布时间】:2018-06-19 21:11:04
【问题描述】:
我正在寻找一种在 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,所以我可能会以错误的方式假设很多事情。如果你看到一些完全的愚蠢,请注意它,我很高兴学习! :)
【问题讨论】:
-
感谢您的编辑,迈克!
标签: javascript testing code-generation jestjs