Szukaj…


Uwagi

Moq to kpiąca biblioteka dla .Net. Umożliwia symulację i weryfikację interakcji z zależnościami w celu ułatwienia testów jednostkowych.

Informacje o wydaniu innej wersji Moq można znaleźć tutaj .

Instalacja lub konfiguracja

  1. Wybierz projekt, do którego chcesz dodać odniesienie do Moq.
  2. Otwórz Nuget dla tego projektu.
  3. Wybierz „Przeglądaj” niż wpisz „moq” w polu wyszukiwania.
  4. Wybierz „Moq”, a następnie kliknij Instaluj.

wprowadź opis zdjęcia tutaj

Wykonanie tych kroków spowoduje zainstalowanie pakietu Moq i doda odniesienie do niego w wybranych odniesieniach do projektu. Po wykonaniu tych kroków Moq może być użyty w projekcie testu jednostkowego, po prostu zadeklarując go w plikach klas testów:

Using Moq;

Moqs są podwójnymi testami

Symulacje są rozumiane jako podwójne testy, które umożliwiają sprawdzenie interakcji z próbkami, nie mają one na celu zastąpienia testowanego systemu. Przykłady często pokazują cechy Moq w następujący sposób:

// Create the mock
var mock = new Mock<IMockTarget>();

// Configure the mock to do something
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");

// Demonstrate that the configuration works
Assert.AreEqual("FixedValue", mock.Object.PropertyToMock);

// Verify that the mock was invoked
mock.VerifyGet(x => x.PropertyToMock);

Chociaż ten przykład pokazuje kroki związane z używaniem makiety, ważne jest, aby pamiętać, że tak naprawdę niczego nie testuje, poza tym, że makieta została skonfigurowana i użyta poprawnie. Faktyczny test wykorzystujący próbkę dostarczy próbkę do systemu, który ma być testowany. Aby przetestować następującą metodę:

public class ClassToTest
{
    public string GetPrefixedValue(IMockTarget provider)
    {
        return "Prefixed:" + provider.PropertyToMock;
    }
}

Możliwe jest utworzenie makiety interfejsu zależnego:

public interface IMockTarget
{
    string PropertyToMock { get; }
}

Aby utworzyć test, który faktycznie sprawdza zachowanie metody GetPrefixedValue :

// Create and configure the mock to return a known value for the property
var mock = new Mock<IMockTarget>();
mock.SetupGet(x => x.PropertyToMock).Returns("FixedValue");

// Create an instance of the class to test
var sut = new ClassToTest();

// Invoke the method to test, supplying the mocked instance
var actualValue = sut.GetPrefixedValue(mock.Object);

// Validate that the calculated value is correct
Assert.AreEqual("Prefixed:FixedValue", actualValue);

// Depending on what your method does, the mock can then be interrogated to
// validate that the property getter was called.  In this instance, it's
// unnecessary since we're validating it via the calculated value.
mock.VerifyGet(x => x.PropertyToMock);


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow