그래서 단위 테스트를 위해 프레임 워크 (Moq)를 조롱하고 놀고 있는데 조롱 프레임 워크를 사용해야 할 때 궁금해하십니까? 조롱 프레임 워크는 종속성을 제거하는 데 사용되기 때문에 단위 테스트는 테스트 할 수있는 "단위"에 초점을 맞출 것이다Mocking Framework는 언제 사용합니까?
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");
}
}
모킹을 사용하면 테스트하지 않는 모든 변수를 제어 할 수 있으므로 한 코드 만 테스트 할 수 있습니다. – paqogomez
+1 paqogomez 즉, 조롱을 통해 테스트중인 코드를 분리 할 수 있으므로 특정 코드 조각 만 테스트 할 수 있습니다. 이점은 빨간색 또는 녹색 테스트 결과가 코드의 어느 부분이 잘못되었는지 나타냅니다. 당신은 일반적으로 서비스를 모의하지만 종종 더 많이 모의합니다. 그러나 여기에서는 사람이 조롱받을 필요가 거의 없습니다. – citykid