À l'aide de MOQ pour tester un référentiel

Je suis en train de tester un référentiel à l'aide de MOQ simuler le comportement de l'opération. Je suis failry nouveau de MOQ, alors pardonnez-moi s'il vous plaît.

Compte tenu de la méthode suivante:

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

Ne ce test sont OK?

[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());
}
Me semble bon
Un bon moyen de tester qu'il fonctionne, c'est de commenter votre code et confirmer que le test échoue au point, puis d'inclure le code de nouveau et assurez-vous qu'il passe... c'est ce qui rend TDD une bonne approche car il agit à titre de vérification des tests que vous avez écrit.

OriginalL'auteur Sam | 2013-10-24