我Moq
用来测试一些 void 方法的行为。MockBehaviour.Strict
必须在Arrange
步骤中指定使用对模拟的每个调用。这导致许多测试没有任何Assert
(或验证)步骤。通过条件只是测试运行没有引发异常。我错过了什么吗?Arrange, Act, Assert
使用严格的模拟时模式是否不合适?是否有更语义化的方式来布局这些测试?
一个简单的例子......
[TestClass]
public void DeleteUser_ShouldCallDeleteOnRepository()
{
// Arrange
var userRepository = new Mock<IUserRepository>(MockBehavior.Strict);
int userId = 9;
userRepository.Setup(x => x.Delete(userId));
var controller = new UserController(userRepository.Object);
// Act
controller.DeleteUser(userId);
// Assert
// ...?
}