Supertest + Knex.js =当前客户端上没有定义池

时间:2015-10-28 17:10:26

标签: node.js mocha supertest knex.js

我正在使用supertest(在Mocha中)来测试我的应用程序,目前正在使用knex.js进行数据库管理。

一切都和knex的老版本(0.5.x)一起运行良好。现在我想使用最新的knex版本。

在大多数情况下,使用

request = supertest(app)

对我来说很好,但是我还需要测试多个请求,而不需要重复使用cookie ......

request = supertest.agent(app)

这会发生什么?

最终会出现主题中描述的错误。我已经向knex lib添加了一些自定义日志'acquireConnection','releaseConnection','initializePool'和'destroy'函数,看看是怎么回事,输出是这样的:

Adquiring connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool {someCustomPoolIdYSet)
Releasing connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool {someCustomPoolIdYSet)
Adquiring connection from pool undefined
[Error] ........ "There is no pool defined on the current client"

任何帮助将不胜感激。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

所以,最后我们发现了!

问题是Passport.js,默认情况下始终用作单例。每次我们引导应用程序时,都会在Passport中注入一个新的序列化程序,但它保留了之前的序列化程序。然后,那些在开始时被注射的人将他们的游泳池摧毁了......并且热潮!