Estoy usando Moq
para probar el comportamiento de algunos métodos nulos. Usando MockBehaviour.Strict
cada llamada al simulacro debe especificarse durante el paso Arrange
. Esto está dando como resultado que muchas pruebas no tengan ningún paso Assert
(o Verificar). La condición de pase es simplemente que la prueba se ejecutó sin lanzar una excepción. ¿Me estoy perdiendo de algo? ¿El patrón Arrange, Act, Assert
no es adecuado cuando se usan simulaciones estrictas? ¿Hay una forma más semántica de diseñar estas pruebas?TDD Organizar Actuar Patrón de Assert cuando se usa Mocks para verificar llamadas de dependencia
Un trivial formada por ejemplo ...
[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
// ...?
}
¿Qué sucede si la prueba como está escrita falla (Repository.delete() no se llama)? ¿Está claro el mensaje de falla? Si es así, diría que no hay necesidad de cambiar esto. –