在我的 Sails 应用程序中,我在 Mocha/Chai/Supertest 中有一些针对sails-disk 数据库运行的集成测试,直到今天。今天我尝试切换到实际的数据库,以测试我的模型的性能和行为以及可靠性。安装 Mongo,运行测试,一切正常。
但是,在我在本地安装了 MySql 和 PgSql 以及两个数据库套件的sails 适配器后,我在对这两个数据库运行测试时遇到了问题。当我发现类似的行为时,我选择在同一个线程中详细说明它们。
PgSql:一半的测试通过,那些不通过的最初不会抛出任何特定的错误。但是,当我调试它们时,我发现它们会抛出“套接字挂断”错误。
MySql:在这里,如果我运行测试,它们都失败了,如果我逐步调试它们,它们就会通过。请注意,没有一个测试具有奇怪的异步行为,这可以解释为什么它们可以在调试时通过(应用程序在断点之间有时间执行“预期”的东西),它们非常简单明了。
到目前为止还没有找到解决方案或解释。我正在开发 Windwos 7 X64 操作系统。
更新:在进一步检查中,似乎一些测试由于超时错误而失败(由于某种原因没有显示为超时错误)。在将 mocha 超时设置得更高一点后,现在有更多的测试通过了,这有点奇怪,因为在 mongo 上,任何测试套件的运行时间都不到一秒。关于在此扩展超时设置上仍然失败的那些测试,在调试期间似乎永远无法到达控制器。我正在使用 supertest 来触发请求,经过一些修改,现在看起来像这样:
var testReq = request(sailsAppEndpoint)
.get(specificLink)
.set('Authorization', token)
.expect(200);
testReq.end(function (err, res) {
expect(err).to.be.null;
});
出于某种原因,在 .end 函数内部永远不会调用回调。还在研究这个。