Ruby on rails 如何在多个应用程序之间共享rspec示例?
我有很多Rails应用程序需要运行相同的rspec示例。这些规范是关于在整个组织中强制执行一致的约定。我熟悉Rspec的shared_示例,但好吧,它们只能在同一个应用程序中共享Ruby on rails 如何在多个应用程序之间共享rspec示例?,ruby-on-rails,ruby,rspec,dry,Ruby On Rails,Ruby,Rspec,Dry,我有很多Rails应用程序需要运行相同的rspec示例。这些规范是关于在整个组织中强制执行一致的约定。我熟悉Rspec的shared_示例,但好吧,它们只能在同一个应用程序中共享 是否有一种跨多个应用程序共享rspec的方法。如果有帮助的话,所有应用程序都共享一个Rails引擎。IMHO,我认为RSpec不支持这一点。但这可以像跨项目共享代码的问题一样处理。所以,如果你已经在你的组织中这样做了,我会坚持这个解决方案,保持一致。否则,您可以尝试: 使用规范创建gem(例如共享规范)。需要gem的l
是否有一种跨多个应用程序共享rspec的方法。如果有帮助的话,所有应用程序都共享一个Rails引擎。IMHO,我认为RSpec不支持这一点。但这可以像跨项目共享代码的问题一样处理。所以,如果你已经在你的组织中这样做了,我会坚持这个解决方案,保持一致。否则,您可以尝试:
共享规范
)。需要gem的lib/shared\u spec.rb中的spec文件
然后,在每个应用程序的gem文件
中,添加gem的“shared\u specs”,Require:false
和需要spec/shared\u specs.rb中的“shared\u specs”
。但是,您希望在您的网站上发布gem
spec
目录。这需要熟悉SCM和流程(每个选项都有一定的假设,但是,我的SO分数太低,无法通过评论提出澄清问题)。您需要使用完整路径要求共享文件(您可以使用ENV变量设置此路径): 或 将其添加到spec文件中,您应该能够调用它 如果要加载多个文件,请确保需要rspec
rails\u helper.rb
(spec\u helper.rb
,如果您有旧版本)中的所有文件,并且确保在使用它们的文件之前加载它们()
rails\u helper.rb
...
Dir['/home/USERNAME/shared_examples/*.rb'].each { |file| require file }
...
或
确保你将我使用的路径替换为你拥有的路径
另一个稍微复杂一点的方法是创建一个只包含共享示例的gem,并且在rails\u helper.rb中需要以下文件:
...
Dir["#{Bundler.load.specs.find{|s| s.name == <gem_name> }.full_gem_path}/shared_examples_path/*.rb"].each { |file| require file }
...
。。。
Dir[“#{Bundler.load.specs.find{s|s.name=}.full|gem_path}/shared_examples_path/*.rb”]。每个{124;文件|需要文件}
...
这可能是gem中的一种方法。这是一个好问题,但看起来很难,我没有研究任何解决方案,也许你应该自己为ruby包装器创建新的解决方案
...
Dir['/home/USERNAME/shared_examples/*.rb'].each { |file| require file }
...
...
Dir["#{ ENV['SHARED_EXAMPLES_PATH'] }*.rb"].each { |file| require file }
...
...
Dir["#{Bundler.load.specs.find{|s| s.name == <gem_name> }.full_gem_path}/shared_examples_path/*.rb"].each { |file| require file }
...