【问题标题】:Obtaining file path of current spec file with shared examples使用共享示例获取当前规范文件的文件路径
【发布时间】:2013-05-22 20:38:47
【问题描述】:

我想问在调用堆栈中获取当前spec文件和其他文件路径的可接受模式是什么。

例如,我有一些共享 it_should_behave_like 示例的视图规范,而 shared_examples_for 是在单独的 mixin 规范中定义的。

想象一下:

views/page1.html_spec.rb views/page2.html_spec.rb

与

it_behaves_like "common view"

和

mixins/common_view_spec_mixin.rb

与

shared_examples_for "common view" do

 

如果我想在mixins/common_view_spec_mixin.rb 中获取规范文件调用示例,调用

example.file_path 会产生 ./spec/mixins/common_view_spec_mixin.rb

但如果我想知道是否正在测试 page1 或 page2,这并不是很有帮助。

 

我发现我可以进入元数据挖掘调用堆栈以获取文件路径:

example.metadata[:example_group][:file_path] 产生./spec/mixins/common_view_spec_mixin.rb

和

example.metadata[:example_group][:example_group][:file_path] 产生 ./spec/views/page1.html_spec.rb 或 ./spec/views/page2.html_spec.rb

 

我想问如果RSpec::Core::Example 的结构发生变化,这是否是一种可接受的模式,或者是否有更好的方法来做到这一点。

谢谢,

【问题讨论】:

  • 假设我们通过some_method_call 获得它,您能否发布一个您希望如何使用它的示例?

标签: ruby-on-rails ruby rspec rspec2 rspec-rails


【解决方案1】:

您想在哪里访问这些信息?在标准格式化程序的输出中,此信息位于失败消息转储中。你会看到这样一行:

共享示例组:从 ./spec/views/page1.html_spec.rb:14 调用的“公共视图”

注意最后,它给出了完整的基本示例文件路径和您调用it_should_behave_like 的行号。直接在它下面应该是标准的上下文文件位置:

./spec/mixins/common_view_spec_mixin.rb:10:in `block (2 levels) in '

【讨论】:

  • 我想在规范中访问它。元数据可以实现这一点,但我只是想知道是否有更清洁的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2013-01-27
  • 1970-01-01
相关资源
最近更新 更多