我正在尝试利用Heroku的这个新功能来测试我们在Heroku上使用mocha的parse-server / nodejs应用程序。
我期待Heroku启动我的应用程序的短暂实例以及测试,以便它们可以对抗它,但似乎并没有发生这种情况。只有测试才会启动。
现在,我发现至少有一个关于配置Dyno编队的片段,以便在测试中使用性能-m以外的dynos,所以我也试图在那里声明我的其他dynos:
"environments": {
"test": {
"scripts": {
"test-setup": "echo done",
"test": "npm run test"
},
"addons": [
{
"plan": "rediscloud:30",
"as": "REDISCLOUD_URL"
}
],
"formation": {
"test": {
"quantity": 1,
"size": "standard-1x"
},
"worker": {
"quantity": 1,
"size": "standard-1x"
},
"web": {
"quantity": 1,
"size": "standard-1x"
}
}
}
}
在我的app.json中,但似乎完全被忽略了。
我知道我的mocha脚本可以导入Web服务器的相关部分并对其进行测试,这就是我在非heroku相关示例中看到的内容,但我们的应用程序也包含了一个工作者,而且我我想分析两者的相互作用并测试工作长度与我们对性能的期望,而不是单个组件,因此“集成测试”。这是Heroku测试的合法用途还是我做错了什么或有错误的期望?我更关心这一点,而不是让它工作,因为我很确定我可以通过一定的方式让它工作(mocha产生服务器进程,npm并发包等),但是如果我能避免的话黑客,更好。
在本地,我能够在脚本中同时导入,但是性能降低了,因为它现在是2个进程+在单个内存进程中运行的测试,具有nodejs的内存上限限制和单个事件循环而不是3。在写这篇文章时,我想我可能会使用throng并根据进程ID生成不同的函数。如果我没有得到更好的解决方案,我会试试这个。
编辑:我已经设法通过在mocha的前一步中将服务器/ worker作为单独的进程生成来运行它,计算适当的ram量以允许每个使用env变量。我仍然有兴趣知道是否有更好的解决方案。