2014-03-05 23 views
1

在此測試中,所需的斷言是,如果獲得的字符串數組的成員具有類似於某事的值。斷言字符串數組成員內容

例如: 說得到的字符串數組是

string[] obtainedArr = new string("c:\programfiles", "d:\morefiles", "e:\some"); 

我們有在東西線:

Assert.That(obtainedArr, Has.Member.Which.Is.String.Containing("d:"), "D: location not obtained"); 

還是我們必須實現這個更好的辦法?

回答

4
Assert.True(obtainedArr.Any(s => s.Contains("d:")), "D: location not obtained"); 

注:默認字符串比較是大小寫敏感的,因此搜索D:會爲您的樣品輸入失敗。此外,如果你正在尋找的子路徑,那麼也許StartsWith是比較合適的檢查,比Contains

Assert.That(obtainedArr.Any(s => 
    s.StartsWith("d:", StringComparison.InvariantCultureIgnoreCase)); 

當然,這個代碼不是很可讀的,所以我會創造(擴展)的方法來檢查,如果給定的路徑是其他路徑的子路徑。

+0

感謝您的快速響應。 這是一種擴展方法嗎? 我得到一個錯誤: 「的System.Array」不包含一個定義爲「任何」,沒有擴展方法「任意」 – dushyantp

+1

@dushyantp是,'Any'是'System.Linq'命名空間的擴展方法。只需添加適當的使用 –

相關問題