简体   繁体   English

单元测试嵌套列表

[英]Unit testing nested lists

I'm writing unit tests for LINQ repository. 我正在为LINQ存储库编写单元测试。 I have the following test: 我有以下测试:

[TestMethod]
public void Find_Method_MustReturn_Customer_Orders_ItemsWithinOrder()
{
      Customer c = _rep.Find(6).SingleOrDefault();
      Assert.IsTrue(c.Orders.Count > 0);                        
}

I can see whether customer has made any orders. 我可以查看客户是否下了订单。 Additionally, I'd like to use LINQ to check whether Orders have any items. 此外,我想使用LINQ来检查订单是否有任何物品。

How can I achieve this? 我该如何实现?

Thank you 谢谢

I think something like this should work: 我认为这样的事情应该起作用:

var items = 
    From o In c.Orders
    From i In o.Items
    Select i;
Assert.IsTrue(items.Any());

This is the equivalent of: 这等效于:

Assert.IsTrue(c.SelectMany(x => x.Items).Any());

This will assert that customer has orders and that each order has items. 这将断言客户有订单,并且每个订单都有项目。

[TestMethod]
public void Find_Method_MustReturn_Customer_Orders_ItemsWithinOrder()
{
    Customer c = _rep.Find(6).SingleOrDefault();
    Assert.IsTrue(c.Orders.Any());      
    Assert.IsTrue(c.Orders.Any(x => x.Items.Any());                        
}

Would a foreach suffice? 一个foreach就足够了吗?

foreach(var order in c.Orders)
{
    Assert.IsTrue(order.Items.Count > 0);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM