我最近注意到我的rspec输出中的一个错误,特别是在失败规范的完整描述中 - 当它提前结束输出时它总是加倍上下文,但是最近它已经做了两倍以上而且在跑步没有及早取消。
举个例子:
- 在“帐户”区域中,当用户类型为“admin”时,在“帐户”区域中,当“用户详细信息”上的用户类型为“admin”时 页面在“帐户”区域中,当用户类型为“admin”时 “用户详细信息”中用户类型为“admin”时的“帐户”区域 页面的行为类似于带有帐户菜单的页面在“帐户”区域中 当用户类型为'admin'时,在'accounts'区域中的用户 类型为“管理员”在“用户详细信息”页面上的“帐户”区域时 用户类型为“admin”在用户类型为“accounts”区域时 “用户详细信息”页面上的“管理员”行为类似于带有的页面 帐户菜单应该有一个名为“首页”的链接
醇>失败/错误:: ::错误消息::
导致这种情况的原因是什么?如何阻止它?
进一步详情: 它似乎最常出现在共享示例组中。 ESPECIALLY共享使用其他共享示例组的示例组。
以下是我正在使用的代码类型的粗略,精简示例。:
shared_examples "a page with a standard page header" do
before(:each){ @header=find(:xpath,"//*[@id='page_header']") }
it_behaves_like "a header with a user control menu"
context "the standard menu" do
test "should exist"
end
end
shared_examples "a page with an administrative header" do
before(:each){ @header=find(:xpath,"//*[@id='page_header']") }
it_behaves_like "a header with a user control menu"
context "the admin menu" do
test "should exist"
end
end
shared_examples "a header with a user control menu" do
context "the user control menu" do
test "should exist"
end
end
users_type.each do |user|
describe "/index" do
before(:each){ @user=set_up_user(user);login_as(@user); visit(page)}
context "when the user is a #{user.type}" do
if(['general','mod'].includes?(@user.type))
test "some things should be true"
it_behaves_like "a page with a standard page header"
elsif('admin'==@user.type)
test "some other things should be true"
it_behaves_like "a page with an administrative header"
else
it_behaves_like "access denied"
end
end
end
end