4
Moq은 기본적으로 재귀 모의를하지 않습니다. 즉 모의에 대한 기대가없는 회원의 경우 Moq는 기본값을 반환합니다. 예를 들어, 주어진 :AutoFixture.AutoMoq가 기본적으로 재귀 모의를 만드는 이유는 무엇입니까?
public interface IFoo
{
Bar Bar();
}
다음
public class Bar
{
}
을 :
[TestMethod]
public void RecursiveMocksAreDisabledByDefaultInMoq()
{
var foo = new Mock<IFoo>().Object;
Assert.IsNull(foo.Bar());
}
그러나 AutoFixture.AutoMoq에, 재귀 모의 객체는 기본적으로 활성화와 같이됩니다
[TestMethod]
public void RecursiveMocksAreEnabledByDefaultInAutoFixture()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var foo = fixture.Create<IFoo>();
Assert.IsNotNull(foo.Bar());
}
왜 그럴까요? AutoFixture.AutoMoq에서 자동 재귀 모크를 해제하는 방법은 무엇입니까?
감사
Moq.3.1.416.3 AutoFixture.AutoMoq.3.16.5
AutoFoq (https://foq.codeplex.com/discussions/470568)의 기본 반환 값과 관련된이 요소가 유용 할 수 있습니다. AutoFoq은 Foq 동작을 변경하지 않으므로 ('null' 'OOTB 메소드의 값을 반환). 나는 또한 AutoFoq과 Foq을 강력히 추천한다 - 그러나 나는 당신이 '그냥해라'는 것을 조롱하는 라이브러리를 바꾸는 것에 감사한다. 나는 가장 긴 시간 동안 개인적으로 모의 라이브러리가 어떻게 Moq보다 훨씬 더 유용 할 수 있고 그것을 알고 있음에도 불구하고 오랫동안 그것을 할인 할 수 있는지 이해하지 못했습니다. (NB 필자는 대부분의 테스트를 F #로 작성합니다.) –
"AutoFixture는 독창적 인 라이브러리이며, 보유하고있는 의견 중 하나는 null이 유효하지 않은 반환 값입니다." http://stackoverflow.com/a/18170070/126014 –
https://autofixture.codeplex.com/workitem/4261 –