Entity framework 如何对正确插入的外键进行单元测试
我有一个订单,它有许多orderitems现在外键是orderitem中的order生成的,所以我必须检查每个orderitems是否都有正确的order外键。这意味着orderitem中的Orderid应该等于该特定的顺序。断言中应该包含什么 我的域类如下Entity framework 如何对正确插入的外键进行单元测试,entity-framework,unit-testing,Entity Framework,Unit Testing,我有一个订单,它有许多orderitems现在外键是orderitem中的order生成的,所以我必须检查每个orderitems是否都有正确的order外键。这意味着orderitem中的Orderid应该等于该特定的顺序。断言中应该包含什么 我的域类如下 public class Order { public int Id { get; set; } public Employee Employee { get; set; } public Location Fr
public class Order
{
public int Id { get; set; }
public Employee Employee { get; set; }
public Location FromLocation { get; set; }
public Location ToLocation { get; set; }
public DateTime OrderDate { get; set; }
public List<OrderItem> OrderItems { get; set; }
public List<OrderDispatch> OrderDispatches { get; set; }
public OrderStatus Status { get; set; }
}
public class OrderItem
{
public int Id { get; set; }
public int Quantity { get; set; }
public Order Order { get; set; }
public Product Product { get; set; }
}
[TestMethod]
public void OrderItemsAreAssignProperOrderId()
{
using (var db = new StockWatchContext())
{
Order o = new Order();
o.OrderDate = DateTime.Now;
o.Status = OrderStatus.Open;
o.Employee = db.Employees.Find(8);
o.FromLocation = db.Locations.Find(4);
o.ToLocation = db.Locations.Find(1);
o.OrderItems = new List<OrderItem> {
new OrderItem {Product = db.Products.Find(1), Quantity = 10},
};
db.Orders.Add(o);
db.SaveChanges();
Assert.AreEqual();
}
}
}
}
公共类秩序
{
公共int Id{get;set;}
公共雇员雇员{get;set;}
公共位置FromLocation{get;set;}
公共位置到位置{get;set;}
public DateTime OrderDate{get;set;}
公共列表OrderItems{get;set;}
公共列表OrderDispatches{get;set;}
公共订单状态状态{get;set;}
}
公共类OrderItem
{
公共int Id{get;set;}
公共整数数量{get;set;}
公共秩序{get;set;}
公共产品产品{get;set;}
}
[测试方法]
public void orderItemsAresSignPropertyOrderId()
{
使用(var db=new StockWatchContext())
{
订单o=新订单();
o、 OrderDate=DateTime.Now;
o、 状态=订单状态。打开;
o、 Employee=db.Employees.Find(8);
o、 FromLocation=db.Locations.Find(4);
o、 ToLocation=db.Locations.Find(1);
o、 OrderItems=新列表{
新OrderItem{Product=db.Products.Find(1),Quantity=10},
};
db.Orders.加入(o);
db.SaveChanges();
Assert.AreEqual();
}
}
}
}
如果您针对专用于测试的数据库进行测试,则可以在每个测试方法之前清空表
然后在保存OrderItemsAreasSignPropertyOrderId()方法中的更改后,检查OrderItem表中的所有行是否具有正确的订单id。您应该首先共享原始方法。在该方法中,我们可以看到您要在单元测试中测试的内容。