这是我的集成测试代码:
// 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)
这适用于您创建的所有属性?
更新
我用谷歌搜索了更多,人们真的在做不同的和奇怪的事情来测试一个实体是否被插入到数据库中:
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 的实体,它正在检查道路表的计数......在我看来,第二个和第三个断言似乎是错误的,因为它们使用带有登录的存储库方法,这可能会在以后失败测试以获取插入的客户/用户。
你怎么看?