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 モックを使用することも、制約されたアクションを使用することもできます:
制約されたアクションを使用する:
<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 は出力パラメータに値を割り当てることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。