我有一组已提取到共享 gem 中的 active_model 模型。我希望 gem 还包含它们的工厂,用于在使用 gem 的任何项目中定义的 rspec 测试,以避免在每个项目中定义相同的工厂。这可能吗?
最佳答案
是的,这是可能的。您可以将工厂放置在您的 gem 中。让我们说 lib/gem/factories/。然后你的其他 gem 可以包括工厂。
例如,当您创建 gem 'awesome_gem' 时,您可以具有以下结构:
|-- 库
| |-- awesome_gem
| | |-- 模块1
| | `-- 版本.rb
| |-- 工厂
| | |-- factory1.rb
| | `-- factory2.rb
| `--awesome_gem.rb
|
`-- 规范
|-- awesome_gem
`-- spec_helper.rb
其中 lib 包含您的 gem 代码,而 specs 包含您的规范。 awesome_gem.rb 将定义您的 gem 包含,例如 awesome_gem/version.rb 和更多包含。但是建议不要包含 factory 目录,因为您的 gem 的用户不能使用 factory_girl。
一旦 gem 被打包,他们就可以在他们的测试中使用 require awesome_gem/factories/factory1.rb。请注意,您需要在规范助手中指定您的工厂路径以包含您的共享工厂。请注意,此解决方案未经测试,需要包含的路径可能不同。您也可以将工厂目录放在 lib 目录之外,只要它包含在您的 .gemspec 中即可。
关于ruby - 我可以将 factorygirl 工厂添加到共享 gem 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511724/