有没有办法用rspec有条件地分组测试?我的意思是说,有没有办法说:“如果这个变量是某个值,运行这组测试。如果这个变量是其他变量,运行这个其他的测试”?Rspec中的条件测试?
基本的例子,它将需要(实际上并不工作,显然,但应该告诉你我想要什么)。假设要测试的用户在其他地方定义,并且正在测试的当前用户是@user。尽管你可能有更好的选择,但没关系。
before do
login_as_user(@user) #This logs them in and brings them to the homepage to be tested
page.visit("/homepage")
end
describe "Check the user homepage"
subject {page}
it {should have_content("Welcome, #{@user.name}!")}
if(@user.role=="admin")
it {should have_link("List Users"}
end
end
请记住我没有对用户没有控制被测试 - 我不能动态创建的用户,例如,没有给用户保证存在,我不知道随便什么样的组合给定用户将具有的角色。所以我确实需要一些方法来说“只有满足这些条件才运行这个测试”,而不是创建每个测试都可以运行的情况。
我很好奇,实际使用情况下这是什么。 –
我必须为几个用户编写一些断言测试,其权限设置相当复杂。最常见的情况是我会想检查用户属性,看看他们是否有权限查看给定的页面 - 如果他们这样做,我想运行标准测试,如果他们不是我想确保他们得到正确权限拒绝他们正在访问的页面的页面。有许多用户需要检查各种权限(和权限继承)。 – GlyphGryph
是否有一个特定的原因,你不能为不同的测试环境分开'describe' /'context'块,然后在每个上下文中将用户的权限模拟/存储在'before'中? –