Rozważmy następujące, gdzie jestem testowania metoda wtryskiwanego zależnościami nazywa się określoną liczbę razy:Podczas używania Moq Sprawdź() Ilość wywołania metody, które w przypadku braku komunikatu o błędzie testowego zawiera rzeczywistą liczbę metoda wywołania przy użyciu MOQ
[Fact]
public void WhenBossTalksEmployeeBlinksTwice()
{
// arrange
var employee = new Mock<IEmployee>();
employee.Setup(e => e.Blink());
var boss = new Boss(employee.Object);
// act
boss.Talk();
// assert
employee.Verify(e => e.Blink(), Times.Exactly(2)); // Passes as expected
employee.Verify(e => e.Blink(), Times.Exactly(1)); // Fails as expected
}
Gdy siłę test niedostatecznej wyjście jest:
Moq.MockException: Wywoływanie nie przeprowadzono na pozornie 1 czas: e => e.Blink()
Co byłoby lepsze jest coś takiego:
Moq.MockException: Inwokacja nieoczekiwanie wykonywane 2 razy, a nie 1 raz: E => e.Blink()
Oto przedmioty związane z testem:
public interface IEmployee { void Blink(); }
public class Boss {
private readonly IEmployee _employee;
public Boss(IEmployee employee) { _employee = employee; }
public void Talk() {
_employee.Blink();
_employee.Blink();
}
}
Czy można zbierać i wyświetlać rzeczywista liczba razy zależność w komunikacie o błędzie niepowodzenia testu?
Nie jestem pewien, czy to ma znaczenie, ale używam Moq v3.1.416.3 (nie najnowszego, wiem, ale inna biblioteka, której używam, nie została zaktualizowana do wersji Moq 4.x ...)
+1 dla kodu przykład :) – ljubomir
Ponieważ znalazłem to w moim googling, myślałem, że dostarczenie aktualizacji. W Moq v4.1 (a może we wszystkich 4.x) pojawi się coś takiego: "oczekiwane wywołanie na makiecie raz, ale było 0 razy". Tak więc odpowiedź na to pytanie jest już nieaktualna. –