使用ava断言错误
Assertion error using ava
首先我的英语不好,但这次考试对我来说失败了。
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/)
})
和return这个
1 failed
db-test » get user
Test finished, but an assertion is still pending
如果我删除行
t.throws(db.getUser('foo'), /not found/)
测试运行没有任何问题。
测试的功能是这个
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)
}
函数的作用是,如果它没有在数据库中获取用户,那么它 return 是一个拒绝承诺,它确实发生了,但在那之后我不知道会发生什么
我假设 db.getUser('foo')
returns 一个 Promise,所以你需要 await
t.throws
断言:
await t.throws(db.getUser('foo'), /not found/)
如果您将 t.throws
行移动到 t.is(function)
之后,那么代码将起作用。
首先我的英语不好,但这次考试对我来说失败了。
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/)
})
和return这个
1 failed
db-test » get user
Test finished, but an assertion is still pending
如果我删除行
t.throws(db.getUser('foo'), /not found/)
测试运行没有任何问题。
测试的功能是这个
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)
}
函数的作用是,如果它没有在数据库中获取用户,那么它 return 是一个拒绝承诺,它确实发生了,但在那之后我不知道会发生什么
我假设 db.getUser('foo')
returns 一个 Promise,所以你需要 await
t.throws
断言:
await t.throws(db.getUser('foo'), /not found/)
如果您将 t.throws
行移动到 t.is(function)
之后,那么代码将起作用。