如何告诉 RSpec 在示例 运行 之前重新启动 Rails?

How to tell RSpec to restart Rails before an example is run?

是否可以告诉 rspec 在示例 运行 之前重新启动 Rails?我正在构建一个连接到 Rails 初始化过程的引擎,用户可以在初始化程序中进行一些配置更改,这会影响 Rails 和引擎的配置方式。我希望能够模拟那些配置更改,重新启动 rails 并测试结果。

我还没有完成这项壮举,但作为最佳实践,我认为您的引擎测试应该是引擎的一部分并且应该具有最小的依赖性。

我见过并认为您应该尝试结合使用的一些方法:

  1. 模拟一个 minimal parent rails app 来测试你的引擎。
  2. 写入multiple dummy apps to test with.
  3. 您可以 split spec_helper and rails_helper in smaller parts, also gaining in setup time 而不是加载整个 rails 应用程序。
  4. 你可以写custom rake tasks to switch environment before spawning a new test thread.
  5. 您还可以在运行时覆盖反映在您的测试中的配置值(加上:使用 dependency injection!)。
  6. 如果您的初始化程序足够复杂,您可以 extract it in a testable helper and wire it up in your test initializers
  7. 此外,似乎有一个 gem 用于:Combustion