2012-12-30 53 views
3

我想知道是否有可能使某些示例測試運行,當且僅當另一個測試通過?我知道你可以使用if: something元數據過濾示例,但根據我的理解,something不能在示例中設置,因爲示例操作爲對象實例,而示例的聲明(其中if: something將在示例組的類方法中操作) (其他人可能比我更好地舉例說明)。在rspec中,我是否可以確保某些示例僅在另一個示例通過時才運行?

在代碼中,這就是我要找的,或者類似的東西

describe Something do 

    it "has a breadcrumb trail" do 
    expect(page).to have_breadcrumb 
    has_breadcrumb = true 
    end 
    it "has the parent name in the breadcrumb", if: has_breadcrumb do 
    expect(page).to have_text("somename") 
    end 
end 

顯然這裏簡化,但動機是,我希望能夠設置的測試,其中期望依賴於實施的另一個功能。

Rspec的2.12

+0

標準做法是將尚未實現的功能的規格標記爲「掛起」。 – Dmitry

+0

我的想法可以回答這個問題是測試視圖時。有一個測試看看是否存在一個表單。然後,之後,對於應該在表單內的每個字段進行測試。如果表單字段的測試失敗,我不想查看錶單中的字段是否存在。這會減少故障輸出,並且更容易查明問題。 – fotanus

回答

0

用於測試最佳實踐是確保你的測試是相互獨立的。我不確定你想要做什麼是理想的。

+0

我不認爲這是關於獨立性的。讓我們繼續我給出的例子。麪包屑是許多不同類型頁面的特徵,讓用戶知道該頁面的父母/祖父母是什麼。在某個頁面上,我想測試麪包屑是否出現,這是一個測試。比方說,我刪除了一個頁面(一個不同的獨立測試),並且要確保它被重定向到的頁面具有正確的父母。做到這一點的唯一方法是通過麪包屑功能,這可能或可能沒有實施。我想我會和德米特里的評論一起去做。儘管歡呼。 – cgat

相關問題