我试图通过检查值来对PUT请求进行单元测试。但是,我遇到了一个简单的问题。我有一个像这样的测试环境:
class TestAppContext : ContextInterface
{
public DbSet<User> Users {get; set;}
public DbSet<Request> Requests { get; set; }
public TestAppContext()
{
this.Users = new TestUsersDbSet();
this.Requests = new TestRequestsDbSet();
}
public int SaveChanges(){
return 0;
}
public void MarkAsModified(Object item) {
}
public void Dispose() { }
}
当使用DbContext运行PUT时,Entry(item).State
方法中的EntityState.Modified
设置为MarkAsModified
,然后更改保存的更改。如何在我的测试上下文中模拟这个,以便DbSet反映PUT请求的变化?
我已经做到了这一点:
public void MarkAsModified(Object item) {
if (item.GetType() == typeof(User))
{
}
else if (item.GetType() == typeof(Request))
{
}
}
这样我就可以确定要修改的内容,但是如何将更改实际保存到该记录的DbSet中呢?
两个记录都在变量id
上标识,int
。
答案 0 :(得分:2)
在测试环境中,只需保留List<Object> markedAsModified
字段,然后在调用MarkAsModified
时将对象添加到该列表中(如果它尚未存在)。然后在您的测试中,您可以使用Assert
语句检查该列表的内容,以确保将正确的对象传递给该函数。