我想问一下,获取当前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
内调用spec文件调用示例,请调用
example.file_path
会屈服
./spec/mixins/common_view_spec_mixin.rb
但如果我想知道page1
或page2
是否正在接受测试,这不是很有帮助。
我发现我可以进入元数据挖掘调用堆栈以获取file_paths:
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
的结构发生变化,或者有更好的方法可以做到这一点,这是否是一种可接受的模式。
谢谢,
答案 0 :(得分:0)
您想在哪里获取此信息?在标准格式化程序的输出中,此信息位于故障消息转储中。您将看到如下行:
共享示例组:来自./spec/views/page1.html_spec.rb:14的“公共视图”
最后请注意,它提供了完整的基本示例文件路径以及您调用it_should_behave_like
的行号。直接在那下面应该是标准的上下文文件位置:
./ spec / mixins / common_view_spec_mixin.rb:10:在'块(2级)中'