1

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

例如,我有一些共享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正在测试,这不是很有帮助。

 

我发现我可以进入元数据以深入调用堆栈以获取 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变化,这是否是一种可接受的模式,或者是否有更好的方法来做到这一点。

谢谢,

4

1 回答 1

0

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

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

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

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

于 2013-05-23T00:19:40.567 回答