代码之家  ›  专栏  ›  技术社区  ›  futureal

rails单元测试可以在与测试不同的环境中运行吗?

  •  9
  • futureal  · 技术社区  · 14 年前

    我们在rails下有一个大型的多开发人员项目,其中我们对模型和控制器都使用测试。现在,开发人员必须在运行测试之前切换“测试”环境的数据库参数,以匹配其本地开发环境。我想知道除了“test”之外,是否有其他方法可以在任何环境中运行这些测试?

    例如,database.yml中有:

    test:
      database: ...
      host: ...
      username: ...
      password: ...
    ...
    dev-one:
      ...
    dev-two:
      ...
    

    我在这上面的文件里找不到任何东西,但也许我找错地方了。有什么想法吗?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   frankpinto    9 年前

    到目前为止,这仍然不起作用。我提交了一个问题: https://github.com/rails/rails/issues/21478 是的。

    我将用更新编辑此答案

        2
  •  0
  •   Roadmaster    14 年前

    只是在运行测试时显式指定环境的问题。你只需要事先准备一下。

    假设您的新环境将命名为“testjohn”(可能是为一个名为john的开发人员命名的)。然后:

    1-副本 配置/环境/测试.rb config/environments/testjohn.rb配置

    2-将相应的db节添加到 配置/数据库.yml (从测试节复制它,重命名它,然后可能更改数据库名称、密码和其他数据)。 我的示例(相当简单)使用了以下内容:

    testjohn:
      adapter: sqlite3
      database: db/testjohn.sqlite3
      pool: 5
      timeout: 5000
    

    3-按如下方式运行测试:

    RAILS_ENV="testjohn" rake db:migrate
    RAILS_ENV="testjohn" rake test:units
    

    顺便说一下,由于rails_env只是一个环境变量,您可能有一个预先设置它的脚本,甚至让每个开发人员在他的 .简介 或者其他文件。他们就这样跑 耙试验:单位 并在其个性化环境下自动执行测试。