1

我正在构建一个引擎,我想使用 VCR 和 Webmock 进行测试。

创建引擎时生成的 Gemfile 中的文档似乎建议应该通过 gemspec 加载所有引擎的 gem,但唯一的选项是 add_dependency 和 add_development_dependency。如果我使用后者,VCR 和 Webmock 会加载到我的开发环境中,然后我必须在开发环境中显式禁用 Webmock。我宁愿不这样做,因为主机应用程序可能希望这些 gem 在开发中工作,而我的引擎禁用它们可能是出乎意料的。

显而易见的解决方案似乎是使用引擎的 Gemfile:

group :test do
  gem 'vcr'
  gem 'webmock'
end

这是加载仅在测试引擎时使用的 gem 的正确方法吗?

这样做有什么陷阱吗?

4

3 回答 3

0

我相信答案是在引擎的 Gemfile 中声明并没有错,gem 仅用于测试和调试引擎代码。此外,我认为 Gemfile 模板应该不那么模棱两可,并为此提交了一个拉取请求:

https://github.com/rails/rails/pull/11881

于 2013-08-14T08:17:05.637 回答
0

Rails 应用程序和 Rails 应用程序的 Rails 引擎的加载顺序是什么?

我的猜测是 Rails 应用程序 Gemfile 是加载或不加载 gem 的决定因素。这可能值得在 Rails 测试应用程序中尝试。

于 2013-07-09T20:52:09.027 回答
0

众所周知的 Rails 引擎之一,rails_admin ( https://github.com/sferik/rails_admin ) 使用这种方法,所以我相信它可以被认为是一种很好的做法。

于 2013-07-09T09:37:33.773 回答