【发布时间】:2018-01-17 18:28:41
【问题描述】:
这里是 JSON 示例:
test = [
[
{
"name": "Test1.1",
"flow": [
{
"send": "test1.1.1",
"receive": [...]
},
{
"send": "test1.1.2",
"receive": [...]
},
]
},
{
"name": "Test1.2",
"flow": [
{
"send": "test1.2.1",
"receive": [...]
},
{
"send": "test1.2.2",
"receive": [...]
},
]
}
],
[
{
"name": "Test2.1",
"flow": [
{
"send": "test2.1.1",
"receive": [...]
},
{
"send": "test2.1.2",
"receive": [...]
},
]
},
{
"name": "Test2.2",
"flow": [
{
"send": "test2.2.1",
"receive": [...]
},
{
"send": "test2.2.2",
"receive": [...]
},
]
}
]
]
我已经成功地使用以下代码运行了测试[0]
describe('Conversations', function () {
for (let test of arrayOfTests) {
describe(test.name, () => {
for (let x = 0; x < test.flow.length; x++) {
let node = test.flow[x];
it("Request: " + node.request, (done) => {
chai.request('http://localhost:5001').then(done())//WORK
});
}
});
}
});
但是,当我尝试拉入整个测试文件并一个接一个地运行每个测试时,我开始遇到问题。我怀疑这可能是由于done() 的放置我已经厌倦了更新它,但我不完全确定如何去做。
我读到有一个it.each,但我不确定这对我的情况是否有帮助。
这是我尝试测试返回错误Empty test suite.的整个文件
干净利落的问题:如何更新以下代码以使用最顶级的 JSON。
describe('Full Tests', () => {
request(
// Get testSuite
}).then((allTests) => {
for (let tests of allTests) {
describe('Single test Array', () => {
for (let test of tests) {
describe("Test: "+ test.name, () => {
for (let x = 0; x < test.flow.length; x++) {
let node = test.flow[x];
it("Request: " + node.request, (done) => {
chai.request('http://localhost:5001').then(done())//WORK
});
}
});
}
});
}
});
});
【问题讨论】:
-
done()被立即调用。传递给.then()的函数应该是函数引用。您可以使用 async/await 在for循环中等待异步任务的结果 -
我建议你看看 mocha 的“之前、之后、之前、之后每个钩子”mochajs.org/#hooks 这不是答案,但它会帮助你编写测试。
标签: javascript unit-testing mocha.js chai