Moq:处理 Out 和 Ref 参数
由于 Action<T>
的通用性质,使用 Moq 模拟和引用参数会带来独特的挑战。 让我们探讨一下如何解决这个问题。
对于out参数,Moq提供了直接的解决方案。 设置镜像方法调用,捕获输出值:
<code class="language-csharp">public interface IService { void DoSomething(out string a); } [TestMethod] public void TestOutParameter() { var serviceMock = new Mock<IService>(); string expectedValue = "value"; serviceMock.Setup(s => s.DoSomething(out expectedValue)); string actualValue; serviceMock.Object.DoSomething(out actualValue); Assert.AreEqual(expectedValue, actualValue); }</code>
Moq 在设置期间有效捕获 expectedValue
并在调用模拟方法时使用它。
不幸的是,Moq 没有为 ref 参数提供类似优雅的解决方案。 Moq 快速入门指南 (https://www.php.cn/link/a77054e9d6c3fb75907aed15140ca1e6) 提供了有关高级使用场景的更全面的指导,包括处理 ref 参数的替代方法,其中可能涉及使用回调或自定义匹配器。
以上是如何使用最小起订量模拟和参考参数?的详细内容。更多信息请关注PHP中文网其他相关文章!