【发布时间】:2020-09-02 12:09:41
【问题描述】:
我正在创建一个 gem,这个 gem 依赖于 Rails 已加载。我需要在未加载 Rails 时创建一个场景。我的 gem 中有这个代码作为示例:
if defined?(Rails) && Rails.application
#some code
end
我试图创建一个存根,但是当我们将它设置为 nil 时,Rails 似乎会重新启动应用程序方法。 https://github.com/rails/rails/blob/fbe2433be6e052a1acac63c7faf287c52ed3c5ba/railties/lib/rails.rb#L38
Rails.stub(:application, nil) do
# test
end
【问题讨论】:
-
显然,您必须以某种方式/某处启动 Rails。如果你跳过这一步怎么办?
-
您是否要编写一个没有加载 Rails 的测试?这会很棘手,因为您的测试环境需要首先加载所有依赖项。你总是可以有几个
Gemfile版本,一个有一个没有,然后运行两个测试,一个有Rails,一个没有。
标签: ruby-on-rails ruby rspec minitest