Mit MOQ auf test-repository

Ich bin versuchen zu testen, ein repository mit MOQ, zu verhöhnen, das Verhalten der repo. Ich bin failry neu MOQ, so mit mir tragen, bitte.

Angesichts der folgenden Methode:

public static SubmissionVersion DeleteNote(IRepository repository, SubmissionVersion version, Guid noteId)
{
    Note note = repository.GetById<Note>(noteId);
    version.Notes.Remove(note);
    repository.Save(version);
    repository.Delete(note);
    return repository.GetById<SubmissionVersion>(version.Id);
}

Ist dieser test OK Aussehen?

[Fact]
public void DeleteNoteV2()
{
    //Arrange
    var note = new Note{ Id = Guid.NewGuid()};

    var subVersion = new Mock<SubmissionVersion>();
    subVersion.Setup(x => x.Notes.Remove(note));

    var repo = new Mock<IRepository>();
    repo.Setup(x => x.GetById<Note>(note.Id)).Returns(note);
    repo.Setup(x => x.GetById<SubmissionVersion>(It.IsAny<Guid?>())).Returns(subVersion.Object);

    //Act
    SubmissionVersion.DeleteNote(repo.Object, subVersion.Object, note.Id.Value);

    //Assert
    repo.Verify(x => x.GetById<Note>(note.Id), Times.Once());
    repo.Verify(x => x.Save(subVersion.Object), Times.Once());
    repo.Verify(x => x.Delete(note), Times.Once());

    subVersion.Verify(x => x.Notes.Remove(It.IsAny<Note>()), Times.Once());
}
Sieht gut aus für mich
Ein guter Weg, um zu testen, ob es funktioniert, ist, kommentieren Sie Ihren code ein und bestätigen Sie, dass der test scheitert an der erwarteten Stelle, dann den code erneut aus, und stellen Sie sicher, dass es geht... das macht TDD einen so guten Ansatz, da es wirkt wie eine überprüfung des tests schreiben Sie auch.

InformationsquelleAutor Sam | 2013-10-24

Schreibe einen Kommentar