使用 ava 测试 promise

Testing promise with ava

我试着测试这个class

class Scraper {
  async run() {
    return await nightmare
      .goto(this.url)
      .wait('...')
      .evaluate(()=>{...})
      .end
  }
}

我的测试是这样的:

test('Scraper test', t => {
  new Scraper().run().then(() => {
    t.is('test', 'test')
  })
})

测试失败:

Test finished without running any assertions

编辑

github 上的存储库:https://github.com/epyx25/test

测试文件:https://github.com/epyx25/test/blob/master/src/test/scraper/testScraper.test.js#L12

您必须使用 assert-planning 来阻止测试,直到 Promise 通知 lambda,例如:

test('Scraper test', t => {
   t.plan(1);
   return new Scraper().run().then(() => {
     t.is('test', 'test')
   })
})

test.cb('Scraper test', t => {
   t.plan(1);
   new Scraper().run().then(() => {
     t.is('test', 'test')
     t.end()
   })
})

你需要return这个承诺。不需要断言计划:

test('Scraper test', t => {
  return new Scraper().run().then(() => {
    t.is('test', 'test')
  })
})

或者更好的是,使用异步测试:

test('Scraper test', async t => {
  await new Scraper().run()
  t.is('test', 'test')
})