Jestem nowym Moq i testowanie w ogóle więc tutaj jest mój noobish Q. Jak mogę sprawdzić, czy Stan nieruchomość na Zamówienie została ustalona przy użyciu MOQ?Sprawdź, czy nieruchomość została ustawiona - używając Min
public class DudeManager
{
private readonly IDRepository _repo;
public DManager(IDRepository repo)
{
_repo = repo;
}
public void Create(Request r)
{
r.Status = Status.Submitted;
_repo.AddRequest(r);
}
}
Czy istnieje lepsze podejście niż następujące? Może za pomocą VerifySet?
[TestMethod]
public void AddingNewRequestSetsStatusToSubmitted()
{
//Arrange
var mock = new Mock<IDRepository>();
var mockRequest = new Mock<Request>();
var dManager = new DManager(mock.Object);
//Act
dManager.Create(mockRequest.Object);
//Assert
Assert.AreEqual(Status.Submitted, mockRequest.Object.Status);
}
EDIT: To podejście skończyło się używając po wszystkich pomocnych sugestii:
//Arrange
var request = new Request();
var mock = new Mock<IDRepository>();
var dManager = new DManager(mock.Object);
mock.Setup(x => x.AddRequest(It.IsAny<Request>()));
//Act
dManager.QueueNewRequest(request);
//Assert
Assert.AreEqual(RequestStatus.Submitted, request.Status);
Takie podejście wydaje się prawo do mnie. Czy ktoś myśli inaczej?
Uważam, że VerifySet najlepiej pasuje. – neontapir
Czy możesz pokazać mi przykład, jak z niego korzystać? Próbowałem używać VerifySet, ale to mnie rozkręciło. –
Nie jestem przekonany, że VerifySet robi cokolwiek, nigdy nie byłem w stanie zestrzelić testu, zawsze przechodzi. Przechodzę przez debugger i widzę, że moja próba to callbase, właściwość, o której mowa, jest zerowa, bez wywołań. VerifySet z doliną "Hello world" i rzecz idzie ... przejść. Chciałbym pójść z ramami testów jednostkowych i stwierdzić, że to jest równe. –