Sök…


Anmärkningar

Moq är ett hålande bibliotek för .Net. Det gör det möjligt att simulera och verifiera interaktioner med beroenden för att underlätta enhetstestning.

Releaseinformation för olika versioner av Moq kan hittas här .

Installation eller installation

  1. Välj projektet du vill lägga till referensen till Moq.
  2. Öppna Nuget för detta projekt.
  3. Välj "Bläddra" än skriv "moq" i sökrutan.
  4. Välj "Moq" och klicka sedan på Installera.

ange bildbeskrivning här

Följande steg installerar Moq-paketet och lägger till en referens till det i de valda projektreferenserna. Efter att dessa steg har slutförts kan Moq användas i enhetstestprojektet genom att helt enkelt förklara det i testklassen:

Using Moq;

Moqs är testdubblar

Spott är avsett som testdubblar, som gör att interaktioner med håna kan valideras, de är inte avsedda att ersätta det system du testar. Exempel visar ofta egenskaper hos Moq enligt följande:

// 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);

Även om det här exemplet visar stegen som är involverade i användning av håna, är det viktigt att komma ihåg att det faktiskt inte testar någonting annat än att skottet har konfigurerats och använts korrekt. Ett faktiskt test som använder ett håravfall kommer att leverera hågan till systemet som ska testas. För att testa följande metod:

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

Det är möjligt att skapa en håna med det beroende gränssnittet:

public interface IMockTarget
{
    string PropertyToMock { get; }
}

Så här skapar du ett test som faktiskt validerar beteendet för GetPrefixedValue metoden:

// 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow