Moqでout/refパラメータを割り当てる 質問する

Moqでout/refパラメータを割り当てる 質問する

Moq (3.0+) を使用してout/パラメータを割り当てることは可能ですか?ref

の使用を検討しましたCallback()が、ジェネリックに基づいているため、ref パラメータはサポートされていません。また、パラメータの入力にAction<>制約 ( ) を設定することも望ましいですが、コールバックでそれを行うこともできます。It.Isref

Rhino Mocks がこの機能をサポートしていることは知っていますが、私が取り組んでいるプロジェクトではすでに Moq が使用されています。

ベストアンサー1

「out」については、次の方法がうまくいくようです。

public interface IService
{
    void DoSomething(out string a);
}

[TestMethod]
public void Test()
{
    var service = new Mock<IService>();
    var expectedValue = "value";
    service.Setup(s => s.DoSomething(out expectedValue));

    string actualValue;
    service.Object.DoSomething(out actualValue);
    Assert.AreEqual(expectedValue, actualValue);
}

Moq は、Setup を呼び出すときに 'expectedValue' の値を調べて、それを記憶しているのではないかと思います。

についてはref、私も答えを探しています。

次のクイックスタート ガイドが役に立ちました。https://github.com/Moq/moq4/wiki/クイックスタート

おすすめ記事