如何在moq It.Is中使用IEnumerable

时间:2014-01-21 17:56:29

标签: c# nunit moq

当检查是否正在使用正确的数据来调用方法时,我可以这样做:

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

其中Results是一个对象,它是Linq查询的输出:

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

    public int Age { get; set; }
}

但是,我也使用IEnumerable作为第二种方法的输入。

如何修改上面的验证以检查IEnumerable of Results是否包含我可以测试的结果。

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

1 个答案:

答案 0 :(得分:1)

此时

“item”是IEnumerable<ResultRecord>。只需写下你想要测试的内容。

这样的东西?

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