我正在使用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"
任何帮助将不胜感激。 提前谢谢。
答案 0 :(得分:1)
所以,最后我们发现了!
问题是Passport.js,默认情况下始终用作单例。每次我们引导应用程序时,都会在Passport中注入一个新的序列化程序,但它保留了之前的序列化程序。然后,那些在开始时被注射的人将他们的游泳池摧毁了......并且热潮!