MOQ를 사용하여 저장소를 테스트하여 저장소의 동작을 조롱하려고합니다. 나는 MOQ에 새로운 실패입니다. 그러니 제발 저와 함께하시기 바랍니다.MOQ를 사용하여 저장소를 테스트하십시오.
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);
}
하는이 테스트는 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());
}
내게 잘 어울리는데 – ayls
작동하는지 테스트하는 좋은 방법 중 하나는 코드를 주석 처리하고 예상 한 지점에서 테스트가 실패했다는 것을 확인한 다음 코드를 다시 포함하고 통과하는지 확인하는 것입니다.이것이 TDD를 훌륭한 접근 방식으로 만드는 이유 중 하나입니다. TDD는 작성한 테스트를 검증하는 역할을하기 때문에 좋은 접근 방식입니다. –