与RethinkDB和Chai异步
Async with RethinkDB and Chai
试图将我的头脑集中在这件事上,这让我陷入了异步循环。
在运行了这个简单的测试之后,当我手动检查RethinkDB时,结果是正确的(数据库"test"中有一个名为"books"的表);然而,无论我在chai的expect
函数中断言什么,这个测试都通过了。我知道这是一个异步问题,因为console.log(result)
在测试完成后打印到控制台。我本以为expect
会在Rethink得到tableList()
之后运行,因为它在回调中。
- 为什么此测试通过(它应该在
['books'] === ['anything']
处失败 - 为什么
expect()
不能在tableList()
之后运行 - 将命令链接到RethinkDB以便按顺序执行的正确方法是什么
db_spec.js:
import {expect} from 'chai'
import r from 'rethinkdb'
describe('rethinkdb', () => {
it('makes a connection', () => {
var connection = null;
r.connect({host: 'localhost', port: 28015}, function(err, conn) {
if (err) throw err
connection = conn
r.dbDrop('test').run(connection, () => {
r.dbCreate('test').run(connection, () => {
r.db('test').tableCreate('books').run(connection, () => {
r.db('test').tableList().run(connection, (err, result) => {
if (err) throw err
console.log(result)
expect(result).to.equal(['anything'])
})
})
})
})
})
})
})
我认为这会起作用,但最内部的回调没有执行,测试只是超时了。
import {expect} from 'chai'
import r from 'rethinkdb'
describe('rethinkdb', () => {
it('makes a connection', (done) => {
var connection = null;
r.connect({host: 'localhost', port: 28015}, function(err, conn) {
if (err) throw err
connection = conn
r.dbDrop('test').run(connection, () => {
r.dbCreate('test').run(connection, () => {
r.db('test').tableCreate('books').run(connection, () => {
r.db('test').tableList().run(connection, (err, result) => {
if (err) throw err
expect(result[0]).to.equal('books').done()
})
})
})
})
})
})
})
相关文章:
- esri javascript异步打印
- JavaScript异步问题
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何使用异步调用更改工厂的变量
- 在等待异步任务时永久循环
- 如何在异步函数中使用javascript对象
- 调用后不异步Ajax忽略函数
- 如何在Mocha/Chai中测试JS原型(非模块)
- learnyounode#9杂耍异步
- 异步获取数据使用JavaScript同步获取数据
- 如何按照承诺使用mocha/chai/chai测试ES7异步函数
- 与RethinkDB和Chai异步
- 当使用Mocha/Chai测试异步函数时,与期望值不匹配总是会导致超时
- Mocha&Chai在浏览器中进行异步测试
- 使用mocha和chai调用异步函数的函数的测试用例