【发布时间】: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