我正在尝试针对实现输出参数的一些遗留方法构建测试。 你能举个例子来说明一下这个吗?
答案 0 :(得分:20)
只需分配测试中的out
或ref
参数。
鉴于此界面:
public interface ILegacy
{
bool Foo(out string bar);
}
您可以编写如下测试:
[TestMethod]
public void Test13()
{
string bar = "ploeh";
var legacyStub = new Mock<ILegacy>();
legacyStub.Setup(l => l.Foo(out bar))
.Returns(true);
Assert.IsTrue(legacyStub.Object.Foo(out bar));
Assert.AreEqual("ploeh", bar);
}
答案 1 :(得分:2)
https://github.com/moq/moq4/wiki/Quickstart顶部的第二个示例有什么问题吗?如果你不想去寻找这样的事情,你真的应该举例说明你想要做什么。
答案 2 :(得分:1)
顺便提一下,如果你想使用moq(当前)来模拟out参数,你也必须进行以下箍跳。假设您想要模拟返回另一个模拟对象的out参数,例如
var mockServiceA = new Mock<IMyService>();
var mockServiceOutput = new Mock<IMyServiceOutput>();
// This will not work...
mockServiceA.Setup(svc => svc.DoSomething(out mockServiceOutput.Object));
// To have this work you have to do the following
IMyServiceOutput castOutput = mockServiceOutput.Object;
mockServiceA.Setup(svc => svc.DoSomething(out castOutput));