我有以下测试方法:
[Test]
public void GetUserTest()
{
//Arrange
User user = new User();
user.Name = "someName";
user.BirthDate = DateTime.Now;
_dataContext.Users.Add(user);
_dataContext.SaveChanges();
//Execute
user = _dbService.GetUser(???);
//Assert
Assert.NotNull(user);
}
ID是为用户对象自动生成的,那么我应该如何获得这个特定的ID?使用DbSet类中的Find(id)方法在GetUser()im之后。
当EF插入具有数据库生成的ID的记录时,它将读取新的ID值到保存的实体中。因此,您可以简单地执行以下操作:
user = _dbService.GetUser(user.Id);
但是我对测试方法本身有一些意见。
当前,您在_dataContext
实例中创建一个用户,该用户也在实例中使用dbService
。您必须确保每个测试的这些不变性都是新的。如果不是这样,则测试将影响其他测试,并且测试结果将变得不可预测。
另外,对于测试的“安排/执行/声明”部分,您应该使用服务/上下文的新实例。在当前测试中,创建一个用户,然后在“执行(执行)”部分中从上下文中检索该同一用户(因为它使用Find
)。实际上,您将创建服务和上下文)并从数据库中获取用户,因为Find
在上下文的缓存中找不到它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句