我正在尝试使用Moq来模拟具有两个OUT参数的方法。这应该根据这里的Moq样本工作:https://code.google.com/p/moq/wiki/QuickStart
var moqDB = new Mock<IMyDB>();
int Value1 = 500000;
decimal Value2 = 0.2M;
moqDB.Setup(db => db.DoSomething(out Value1, out Value2)).Returns(true);
但它没有在我正在测试的方法中设置值:
public virtual void TestMethod(IMyDB db)
{
int Value1 = 0;
decimal Value2 = 0.0M;
db.DoSomething(out Value1, out Value2);
// Check Values
}
我做错了什么?
答案 0 :(得分:1)
moq实际上并没有改变输出值。在您发布的示例中,他们将out值初始化为他们想要的值(var outString = "ack";
)。在你的代码中,你从0开始,期望函数返回正确的值。
我没有看到任何表明你可以移出值的文件。相反,你的代码应该只是;
public virtual void TestMethod(IMyDB db)
{
int Value1 = 500000;
decimal Value2 = 0.2M;
db.DoSomething(out Value1, out Value2);
// look the out values are 500000 and .2M, OMG!!!
}
有点蹩脚......