【问题标题】:Rails test across multiple environments跨多个环境的 Rails 测试
【发布时间】:2010-06-12 14:49:20
【问题描述】:

有没有办法在测试中途改变 Rails 环境?或者,设置一个测试套件的正确方法是什么,该套件可以在一个环境中启动 Rails,在其中运行我的前半部分测试,然后在另一个环境中重新启动 Rails 以完成测试?这两个环境有不同的数据库。

一些必要的上下文:我正在编写一个 Rails 插件,它允许多个安装的 Rails 应用程序在用户帮助下相互通信,以便没有 Internet 访问权限的用户仍然可以使用该应用程序。他们将运行应用程序的本地版本,并将他们的工作上传到在线应用程序,方法是将文件保存到拇指驱动器并将其带到网吧。

该插件为 Rails 添加了两个特殊环境:“offline-production”和“offline-test”。我想编写涉及“测试”和“离线测试”环境的功能测试,分别代表应用的主要在线版本和应用的本地离线版本。

编辑:我一直在阅读有关 Rack::Test 的内容,看来这可能是要走的路,因为它将测试框架置于 rails 本身之外。但是我仍然不知道如何使用它来进行涉及多个环境的测试。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby testing environment


    【解决方案1】:

    也许从拥有多个数据库连接的角度考虑问题,而不是拥有多个环境?你不能真正中途切换环境,至少没有大量的黑客攻击和搞砸的事情。 :)

    http://anandmuranal.wordpress.com/2007/08/23/multiple-database-connection-in-rails/

    【讨论】:

    • 嗯,所以我可以再次调用建立连接来更改模型当前正在使用哪个数据库?这是我需要的大部分,但不是全部:我正在测试一些特定于环境的行为(即允许在线应用程序读取但不能更改源自离线应用程序的数据,反之亦然)。不过,我想我可以存根环境检查方法来做到这一点;那会很好用。非常感谢! :-) 实际上,自从我问了这个问题后,我最终采用了不同的方式:我在 Rakefile 中使用 fork 来启动单独的 Rails 环境。
    • 你可以存根 Rails.env.development 吗?作为 Rails.env.stub!(:development?).and_return(true) 我想。不过,这似乎不是最佳做法。您可以让代码依赖于环境设置的配置,而不是让您的代码依赖于环境,这样更容易更改以进行测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 2013-09-07
    • 2011-06-28
    • 1970-01-01
    相关资源
    最近更新 更多