Ausgabeparameterzuweisung in Moq
Frage:
Kann Moq verwendet werden, um Ausgabeparametern Werte zuzuweisen?
Antwort:
Ja, Sie können Moq 3.0 und höher verwenden, um Ausgabeparametern Werte zuzuweisen. So geht's:
Für Ausgabeparameter:
<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 zeichnet den einem Ausgabeparameter während der Einrichtung zugewiesenen Wert auf und gibt diesen Wert während des Tests zurück.
Für Referenzparameter:
Moq unterstützt diese Funktion derzeit nicht. Sie können jedoch Rhino Mocks verwenden oder eine eingeschränkte Aktion als Problemumgehung verwenden:
Eingeschränkte Aktion verwenden:
<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>
Hier verwenden wir die It.Ref<T>.IsAny
-Einschränkung, um einen beliebigen Eingabereferenzparameter abzugleichen und seinen Wert im Rückruf festzulegen.
Das obige ist der detaillierte Inhalt vonKann Moq Out-Parametern Werte zuweisen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!