Używam Moq
do testowania zachowania niektórych metod void. Przy każdym połączeniu z próbą należy podać krok Arrange
. Powoduje to wiele testów, które nie mają żadnego kroku Assert
(lub Verify). Warunek przejścia jest po prostu taki, że test został uruchomiony bez wyjątku. Czy czegoś brakuje? Czy wzorzec Arrange, Act, Assert
jest nieodpowiedni przy stosowaniu rygorystycznych makiet? Czy istnieje bardziej semantyczny sposób rozmieszczenia tych testów?TDD Rozmieść akt Wzorzec assert podczas korzystania z Mocks w celu sprawdzenia wywołań zależności
Trywialny składa się przykładem ...
[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
// ...?
}
Co się stanie, jeśli test zapisany nie powiedzie się (funkcja Repository.delete() nie jest wywoływana)? Czy komunikat o błędzie jest jasny? Jeśli tak, powiedziałbym, że nie trzeba tego zmieniać. –