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

Gui*_*rme 4 mysql rspec ruby-on-rails azk

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

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

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

Fel*_*les 6

我来自azk核心团队,在这里我们通过简单地添加额外的对系统+ db并添加适当的设置来添加测试环境.

当您使用扩展测试系统时,它会更容易:

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",
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

确保你database.yml能够处理DATABASE_URLenv var(我们强烈建议你使用这个:https://gist.github.com/gullitmiranda/62082f2e47c364ef9617)

最后,要运行测试,只需执行:

$ azk start postgres-test
$ azk shell example-test -- bundle exec rake test
Run Code Online (Sandbox Code Playgroud)

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