使用 Entity Framework 对 Put 进行单元测试
Unit Testing a Put With Entity Framework
我正在尝试通过检查值来对 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
在 MarkAsModified
方法中设置为 EntityState.Modified
,然后保存更改。我如何在我的测试上下文中模拟它,以便 DbSet 反映来自 PUT 请求的更改?
我已经做到了:
public void MarkAsModified(Object item) {
if (item.GetType() == typeof(User))
{
}
else if (item.GetType() == typeof(Request))
{
}
}
这样我就可以确定正在修改的内容,但是我如何实际将更改保存到该记录的 DbSet 中?
两条记录都在变量 id
上标识,该变量是 int
.
在您的测试上下文中只保留一个 List<Object> markedAsModified
字段,然后在对 MarkAsModified
的调用中将该对象添加到该列表(如果它尚不存在)。然后在您的测试中,您可以使用 Assert
语句来检查该列表的内容,以确保将正确的对象传递给该函数..
我正在尝试通过检查值来对 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
在 MarkAsModified
方法中设置为 EntityState.Modified
,然后保存更改。我如何在我的测试上下文中模拟它,以便 DbSet 反映来自 PUT 请求的更改?
我已经做到了:
public void MarkAsModified(Object item) {
if (item.GetType() == typeof(User))
{
}
else if (item.GetType() == typeof(Request))
{
}
}
这样我就可以确定正在修改的内容,但是我如何实际将更改保存到该记录的 DbSet 中?
两条记录都在变量 id
上标识,该变量是 int
.
在您的测试上下文中只保留一个 List<Object> markedAsModified
字段,然后在对 MarkAsModified
的调用中将该对象添加到该列表(如果它尚不存在)。然后在您的测试中,您可以使用 Assert
语句来检查该列表的内容,以确保将正确的对象传递给该函数..