azk - 如何设置测试数据库?

时间:2015-07-09 23:02:19

标签: mysql ruby-on-rails rspec azk

我在开发中使用了azk(它是一个Ruby on Rails项目),而azk设置了一个名为#{manifest.dir}_development的MySQL数据库(manifest.dir是项目所在的目录名)。

问题在于,当我尝试运行RSpec测试时,它将访问相同的开发数据库,​​而不是测试数据库。

我和我的同事在过去几个小时里一直在努力想弄清楚如何设置测试数据库。我们怎么做到这一点?

1 个答案:

答案 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

这应该足够了,但如果您有任何其他问题,请告诉我。