>백엔드 개발 >C++ >Moq가 Out 매개변수에 값을 할당할 수 있습니까?

Moq가 Out 매개변수에 값을 할당할 수 있습니까?

DDD
DDD원래의
2025-01-18 05:31:13735검색

Can Moq Assign Values to Out Parameters?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.