【问题标题】:Testing promise with ava用ava测试promise
【发布时间】:2017-06-24 15:23:07
【问题描述】:

我尝试测试这个类

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')
  })
})

测试失败:

测试结束,没有运行任何断言

编辑

github 上的仓库:https://github.com/epyx25/test

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

【问题讨论】:

    标签: node.js testing promise nightmare ava


    【解决方案1】:

    您需要返回承诺。不需要断言计划:

    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')
    })
    

    【讨论】:

      【解决方案2】:

      您必须使用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()
         })
      })
      

      【讨论】:

      • 谢谢,但我不工作。这是我得到的: 测试返回的拒绝承诺拒绝原因:“cov_1fanynun32 未定义”当我运行我的应用程序时。该方法工作正常。只有在测试中才会被拒绝。
      • cov_1fanynun32 is not defined 将来自使用不正确的代码覆盖工具。这不是 AVA 造成的,返回 promise 就可以了。
      • @MarkWubben 谷歌搜索cov_1fanynun32 不返回任何内容。我克隆了这个骨架项目:github.com/Skahrz/project-skeleton。这是github上的repo:github.com/epyx25/test
      • @user3568719 好。有一个像我一样的例子,只适合你。 github.com/epyx25/test/blob/master/src/test/scraper/…
      • @holi-java 是的,那个测试是我写的,但它有我上面提到的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      相关资源
      最近更新 更多