首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ava的断言错误

使用ava的断言错误
EN

Stack Overflow用户
提问于 2017-08-05 18:01:34
回答 2查看 683关注 0票数 0

首先,我的英语不好,但这次考试对我来说不及格。

代码语言:javascript
复制
test('get user', async t => {
  let db = t.context.db

  t.is(typeof db.getUser, 'function', 'getUser is a function')

  let user = fixtures.getUser()
  let created = await db.saveUser(user)
  let result = await db.getUser(user.username)

  t.deepEqual(created, result)

  // t.throws(db.getUser('foo'), /not found/)
})

把这个还给我

代码语言:javascript
复制
1 failed

db-test » get user

Test finished, but an assertion is still pending

如果我删除这行

代码语言:javascript
复制
t.throws(db.getUser('foo'), /not found/)

测试没有任何问题。

测试的功能是:

代码语言:javascript
复制
getUser (username, callback) {
  if (!this.connected) {
    return Promise.reject(new Error('not connected')).asCallback(callback)
  }

  let connection = this.connection
  let db = this.db

  let tasks = co.wrap(function * () {
    let conn = yield connection

    yield r.db(db).table('users').indexWait().run(conn)
    let users = yield r.db(db).table('users').getAll(username, {
      index: 'username'
    }).run(conn)

    let result = null

    try {
      result = yield users.next()
    } catch (e) {
      return Promise.reject(new Error(`user ${username} not found`))
    }

    return Promise.resolve(result)
  })

  return Promise.resolve(tasks()).asCallback(callback)
}

这个函数所做的是,如果它没有在数据库中获得用户,那么它返回一个拒绝承诺,它实际上发生了,但在那之后,我不知道会发生什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-06 21:54:20

我假设db.getUser('foo')返回一个承诺,所以您需要await t.throws断言:

代码语言:javascript
复制
await t.throws(db.getUser('foo'), /not found/)
票数 2
EN

Stack Overflow用户

发布于 2017-08-09 16:48:16

如果您在t.throws之后移动t.is(function)行,那么代码就会正常工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45524943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档