azk - 如何设置测试数据库?
azk - how to setup a test database?
我在开发中使用了 azk(它是 Rails 项目上的 Ruby),azk 建立了一个名为 #{manifest.dir}_development
的 MySQL 数据库(带有 manifest.dir
为项目所在的目录名).
问题是,当我尝试 运行 RSpec 测试时,它将访问同一个开发数据库,而不是测试数据库。
在过去的几个小时里,我和我的同事一直在苦苦思索如何设置测试数据库。我们该怎么做?
我来自 azk 核心团队,在这里我们通过简单地添加一个额外的具有适当设置的 system+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
环境变量(我们强烈建议您使用这个:https://gist.github.com/gullitmiranda/62082f2e47c364ef9617)
最后,对于 运行 你的测试,只需执行:
$ azk start postgres-test
$ azk shell example-test -- bundle exec rake test
这应该足够了,但如果您有任何其他问题,请告诉我。
我在开发中使用了 azk(它是 Rails 项目上的 Ruby),azk 建立了一个名为 #{manifest.dir}_development
的 MySQL 数据库(带有 manifest.dir
为项目所在的目录名).
问题是,当我尝试 运行 RSpec 测试时,它将访问同一个开发数据库,而不是测试数据库。
在过去的几个小时里,我和我的同事一直在苦苦思索如何设置测试数据库。我们该怎么做?
我来自 azk 核心团队,在这里我们通过简单地添加一个额外的具有适当设置的 system+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
环境变量(我们强烈建议您使用这个:https://gist.github.com/gullitmiranda/62082f2e47c364ef9617)
最后,对于 运行 你的测试,只需执行:
$ azk start postgres-test
$ azk shell example-test -- bundle exec rake test
这应该足够了,但如果您有任何其他问题,请告诉我。