我的“常见问题”页面中只有很少的扩展元素,因此我想测试所有这些元素。
在foreach
部分中编写夹具和/或测试时,终端反映了一个错误
ERROR no test to run.
我不明白为什么
我尝试将唯一的测试包装在foreach
中,并将所有夹具与该测试包装在一起,结果是相同的。
fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
.beforeEach(async () => {await waitForReact();
})
.before(async t => {
await waitForReact();
await list();
}).only;
faqItems.forEach( (element) => {
test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
await t.expect(element.find('[expanded={true]]').exists).ok();
});
});
我希望测试咖啡馆可以将faqItems.length
数量的测试运行到“检查常见问题解答扩展项目”工具中
我使用命令testcafe chrome faq.test.ts
screen shot of run test result
UPD
let faqItems: Array<Selector> = [faq.item];
async function list() {
const count = await faq.item.count;
console.log(`count = ${count}`)
for (let i = 0; i < count; i++) {
await faqItems.push( await faq.item.nth(i));
console.log(await faqItems[i].getReact(({key})=> key));
}
}
fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
.beforeEach(async () => {
await waitForReact();
await list();
})
faqItems.forEach((element)=>{
test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
await t.expect(element.find('[expanded={true}]').exists).ok();
});
})
答案 0 :(得分:3)
首先,您对代码的前提条件不属于forEach
循环的一部分,这可能会给您带来麻烦。我考虑将faqItems.forEach()
移到fixture
上方
faqItems.forEach( (element) => {
fixture('check FAQ expand items').page(URL.local.faq)//.meta({ status: 'indev' })
.beforeEach(async () => {await waitForReact();
})
.before(async t => {
await waitForReact();
await list();
}).only;
test(`check that ${element.getReact(({key})=>key)} is present`, async t => {
await t.expect(element.find('[expanded={true]]').exists).ok();
});
});
})
如果在fixture
中有一些不应针对每个FAQ项目运行的测试,则将其移至另一个灯具。
第二,我不确定,您可以在此处使用forEach
,因为forEach
作为循环和Arrays的函数不能与async/await
一起使用。您可以使用for...of
循环或标准for
循环
答案 1 :(得分:0)
问题是该数组初始化为空。我不知道为什么,但是在测试数组中包含初始化的数据,而不是在“ BeforeAll”中生成。看来这是一个testcafe错误,但也许我还不太懂根本原因。 ps。顺便说一下,夹具在内部/外部循环中的位置都没有关系。