首页 > 解决方案 > Testcafe 找不到包含在迭代器中的测试

问题描述

我的常见问题页面中几乎没有展开元素,所以我想测试所有这些元素。在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

运行测试结果截图

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();
  });
})

结果图片

标签: typescriptautomated-testse2e-testingtestcafedata-driven-tests

解决方案


首先,您预先设置部分代码不是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您有一些不应该为每个常见问题项目运行的测试,则将其移至另一个夹具。

其次,我不确定你是否可以forEach在这里使用,因为forEach作为循环和作为数组的函数不能使用async/await. 您可以使用for...of循环或标准for循环


推荐阅读