首页 > 解决方案 > 如何测试依赖 Rails 并使用 Rails 命令的 gem

问题描述

我正在制作一个执行 Rails 命令的 gem(rails g model Item例如)。当我在 Rails 项目中使用它时,一切正常。问题是在 Rails 项目之外的开发中对其进行测试。

我正在使用cucumberwitharuba来测试 CLI 命令是否执行正确的 rails 命令并生成预期的文件。不幸的是,当我尝试测试该行为时,它失败了,因为没有 rails 文件,并且命令需要在 Rails 项目中运行才能工作。

我在 gemspec 中添加了一个 rails 依赖项:

Gem::Specification.new do |spec|
  spec.add_development_dependency 'rails', '~> 5.2.4'
end

我曾考虑在测试开始时创建一个新的 rails 项目,然后在测试运行后将其删除,但这似乎非常不方便。有一个更好的方法吗?

标签: ruby-on-railsrubyrubygemscucumberaruba

解决方案


查看 Thoughbot 的评估宝石

Appraisal 与 bundler 和 rake 集成,以在称为“评估”的可重复场景中针对不同版本的依赖项测试您的库。

这是有关如何设置它的指南tests,包括在您的目录中设置微型 Rails 应用程序。


推荐阅读