【发布时间】:2010-06-15 08:28:53
【问题描述】:
我正在尝试针对一些实现参数的旧方法构建测试。 你能举个例子吗?
【问题讨论】:
-
你需要澄清你在做什么,以及为什么它不能按预期工作。仅“无参数的起订量”是不够的 - 首先,您为什么需要起订量?请显示一些代码。
-
还好。环境复杂,我得补一下。我只是想知道某处是否有完整的sn-p。仅此而已。我会把一些东西放在一起并发布
标签: moq
我正在尝试针对一些实现参数的旧方法构建测试。 你能举个例子吗?
【问题讨论】:
标签: moq
只需从测试中分配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);
}
【讨论】:
https://github.com/moq/moq4/wiki/Quickstart 顶部的第二个示例有什么问题吗?如果你不打算寻找这样的东西,你真的应该举例说明你正在尝试做的事情。
【讨论】:
顺便说一句,如果您也想使用 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));
【讨论】: