有沒有辦法用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'中? –