2014-01-21 82 views
0

當檢查正確的數據被用於調用一個方法我可以這樣做:如何使用的IEnumerable與MOQ It.Is

mockedClass.Verify(method => method.WriteToConsole(It.Is<Result>(item => item.Name == "Bob" && item.Age == 44))); 

其中結果是一個對象,它是從一個LINQ輸出查詢:

public class Result 
{ 
    public string Name { get; set; } 

    public int Age { get; set; } 
} 

但是,我也使用IEnumerable作爲第二種方法的輸入。

如何修改上面的驗證以檢查IEnumerable結果是否包含我可以測試的結果。

mockedClass.Verify(method => method.WriteListToConsole(It.Is<IEnumerable<ResultRecord>>(item => What GOES HERE?))); 

回答

1

當時的「item」是IEnumerable<ResultRecord>。只要寫你想測試的東西。

這樣的事情?

mockedClass.Verify(method => method.WriteListToConsole(It.Is<IEnumerable<ResultRecord>>(item => item.Count() == 1 && item.ToList()[0].SomeProperty == "Something")));