我在开发中使用了azk(它是一个Ruby on Rails项目),而azk设置了一个名为#{manifest.dir} _development的MySQL数据库(manifest.dir是项目所在的目录名).
问题是,当我尝试运行RSpec测试时,它将访问相同的开发DB,而不是测试数据库.
我和我的同事在过去的几个小时里一直在努力弄清楚如何设置测试数据库.我们应该怎么做?
解决方法:
我来自azk核心团队,在这里我们通过简单地添加一个具有适当设置的额外配对系统数据库来添加测试环境.
当您使用扩展测试系统时,它会更容易:
systems({
example: {
depends: ["postgres"],
// ...
},
example-test: {
extends: "example",
depends: ["postgres-test"],
scalable: { default: 0, limit: 1 },
http: false,
wait: false,
envs: {
// envs aren't extended by default. Add all required env vars from the original system here
// ...
},
},
postgres: {
// ...
},
"postgres-test": {
extends: "postgres",
scalable: { default: 0, limit: 1 },
envs: {
// Once again, add the required env vars from postgres system here
POSTGRES_USER: "azk",
POSTGRES_PASS: "azk",
POSTGRES_DB : "#{manifest.dir}_test",
},
},
});
确保您的database.yml能够处理DATABASE_URL env var(我们强烈建议您使用这个:https://gist.github.com/gullitmiranda/62082f2e47c364ef9617)
最后,要运行测试,只需执行:
$azk start postgres-test
$azk shell example-test -- bundle exec rake test
这应该足够了,但如果您有任何其他问题,请告诉我.