Bei der Verwendung eines Mocking-Framework?

So Spiele ich, um mit mocking frameworks (Moq) für meine unit-tests, und Frage mich, wenn Sie verwenden sollten, ein mocking framework?

Was ist der Vorteil/Nachteil zwischen den beiden folgenden tests:

public class Tests
{
    [Fact]
    public void TestWithMock()
    {
        //Arrange
        var repo = new Mock<IRepository>();

        var p = new Mock<Person>();
        p.Setup(x => x.Id).Returns(1);
        p.Setup(x => x.Name).Returns("Joe Blow");
        p.Setup(x => x.AkaNames).Returns(new List<string> { "Joey", "Mugs" });
        p.Setup(x => x.AkaNames.Remove(It.IsAny<string>()));

        //Act
        var service = new Service(repo.Object);
        service.RemoveAkaName(p.Object, "Mugs");

        //Assert
        p.Verify(x => x.AkaNames.Remove("Mugs"), Times.Once());
    }

    [Fact]
    public void TestWithoutMock()
    {
        //Arrange
        var repo = new Mock<IRepository>();

        var p = new Person { Id = 1, Name = "Joe Blow", AkaNames = new List<string> { "Joey", "Mugs" } };

        //Act
        var service = new Service(repo.Object);
        service.RemoveAkaName(p, "Mugs");

        //Assert
        Assert.True(p.AkaNames.Count == 1);
        Assert.True(p.AkaNames[0] == "Joey");
    }
}
  • Spott erlaubt Ihnen die Steuerung aller Variablen, Sie sind NICHT testen, so dass Sie nur testen ein Stück Programmcode.
  • +1 paqogomez, in anderen Worten, Spott ermöglicht Ihnen, zu isolieren, die unter code-test, so dass Sie nur testen, einen bestimmten code-Stück. der Vorteil ist, dass eine rot-oder grün-test-Ergebnis zeigt an, welcher Teil der code falsch ist. Sie in der Regel mock-Dienste aber oft mehr. hier jedoch, eine person wird kaum erfordern wird verspottet.
InformationsquelleAutor Sam | 2013-10-30
Schreibe einen Kommentar