我在开发中使用了azk(它是一个Ruby on Rails项目),而azk设置了一个名为#{manifest.dir}_development
的MySQL数据库(manifest.dir
是项目所在的目录名)。
问题在于,当我尝试运行RSpec测试时,它将访问相同的开发数据库,而不是测试数据库。
我和我的同事在过去几个小时里一直在努力想弄清楚如何设置测试数据库。我们怎么做到这一点?
答案 0 :(得分:6)
我来自azk核心团队,在这里我们添加一个测试环境,只需添加一个额外的对系统+ db并进行适当的设置。
当您对测试系统使用extends时,它会更容易:
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
这应该足够了,但如果您有任何其他问题,请告诉我。