Moq에서 출력 매개변수 지정
질문:
Moq를 사용하여 출력 매개변수에 값을 할당할 수 있나요?
정답:
예, Moq 3.0 이상을 사용하여 출력 매개변수에 값을 할당할 수 있습니다. 방법은 다음과 같습니다.
출력 매개변수의 경우:
<code class="language-csharp">public interface IService { void DoSomething(out string a); } [TestMethod] public void Test() { var service = new Mock<IService>(); string expectedValue = "value"; service.Setup(s => s.DoSomething(out expectedValue)); string actualValue; service.Object.DoSomething(out actualValue); Assert.AreEqual(expectedValue, actualValue); }</code>
Moq는 설정 중에 출력 매개변수에 할당된 값을 기록하고 테스트 중에 해당 값을 반환합니다.
참조 매개변수:
Moq는 현재 이 기능을 지원하지 않습니다. 그러나 Rhino Mocks를 사용하거나 제한된 작업을 해결 방법으로 사용할 수 있습니다.
제한된 작업 사용:
<code class="language-csharp">public interface IService { void DoSomething(ref string a); } [TestMethod] public void Test() { var service = new Mock<IService>(); string value = "initial"; service.Setup(s => s.DoSomething(ref It.Ref<string>.IsAny)) .Callback<string>(s => s = "expectedValue"); service.Object.DoSomething(ref value); Assert.AreEqual("expectedValue", value); }</code>
여기에서는 It.Ref<T>.IsAny
제약 조건을 사용하여 모든 입력 참조 매개변수를 일치시키고 콜백에 해당 값을 설정합니다.
위 내용은 Moq가 Out 매개변수에 값을 할당할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!