我可以将工厂女工厂添加到共享宝石

时间:2014-07-01 13:39:41

标签: ruby gem factory-bot

我有一组active_model模型,我已将其提取到共享gem中。我希望gem还包含他们的工厂,用于在任何使用gem的项目中定义的rspec测试,以避免在每个项目中定义相同的工厂。这可能吗?

1 个答案:

答案 0 :(得分:2)

是的可能。您可以将工厂放在宝石中。让我们说lib / gem / factories /。那么你的其他宝石可以包括工厂。

例如,当您创建gem'awesome_gem'时,您可以拥有以下结构:

|-- lib | |-- awesome_gem | | |-- module1 | | `-- version.rb | |-- factories | | |-- factory1.rb | | `-- factory2.rb | `-- awesome_gem.rb | `-- spec |-- awesome_gem `-- spec_helper.rb

其中lib包含您的宝石代码,规格包含您的规格。 awesome_gem.rb将定义您的gem包括诸如awesome_gem / version.rb和更多包含。但是建议不要包含工厂目录,因为你的gem的用户不能使用factory_girl。

一旦宝石被打包,他们可以在测试中使用require awesome_gem / factories / factory1.rb。请注意,您需要在规范帮助器中指定工厂路径以包含共享工厂。请注意,此解决方案未经过测试,需要包含的路径可能不同。您也可以将工厂目录放在lib目录之外,只要它包含在.gemspec中。