Sto usando Moq
per verificare il comportamento di alcuni metodi di annullamento. Utilizzando MockBehaviour.Strict
ogni chiamata alla simulazione deve essere specificata durante il passaggio Arrange
. Ciò si traduce in un sacco di test che non hanno alcun passaggio Assert
(o Verifica). La condizione di pass è semplicemente che il test è stato eseguito senza generare un'eccezione. Mi sto perdendo qualcosa? Il modello Arrange, Act, Assert
non è adatto quando si usano i banchi rigorosi? C'è un modo più semantico per impaginare questi test?TDD Arrange Act Assert pattern quando si usano i Mock per verificare le chiamate di dipendenza
Un banale esempio costituito da ...
[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
// ...?
}
Cosa succede se il test come scritto non riesce (Repository.delete() non viene chiamato)? Il messaggio di errore è chiaro? Se è così, direi che non è necessario cambiarlo. –