这是我的集成测试代码:
// Arrange
var user = new User() { FirstName = "test", UserId = 4, LastName = "test", RegisteredAt = new DateTime(2013, 02, 02) };
var repository = new GenericRepository<User>(_context);
// Act
repository.Add(user);
_context.SaveChanges();
// Assert
Assert.IsNotNull(user.UserId);
我见过人们用UserId进行IsNotNull测试没有意义,因为UserId永远不应该是一个可以为空的整数。
您将测试什么以及如何测试以确保您创建并添加到数据库中的实体是否相同?
你会这样做:
var dbUser = _context.Users.First(u => u.FirstName == "test")
然后
Assert.AreEqual(dbUser.FirstName,user.FirstName)
这适用于您创建的所有属性吗?
更新
我已经google了一点,人们真的做了不同的和奇怪的事情来测试一个实体被插入到数据库中:
Assert.That(1, Is.EqualTo(context.Roads.Count()));
Assert.assertNotNull(repo.findUserById(user.getId()));
ICustomer retainedCustomer = repository.
Customers.
Where(q => q.CustomerName == expectedCustomerName).
FirstOrDefault();
Assert.IsNotNull(retainedCustomer);
第一个甚至没有测试被称为road的插入实体它正在检查路表的数量... 在我看来,第二个和第三个断言似乎是错误的,因为他们使用存储库方法登录,在以后的测试中可能会失败以获取插入的客户/用户。
您怎么看?