你如何使用Moq创建一个回声模拟?

时间:2009-12-08 13:48:13

标签: c# unit-testing moq

我正在为ITransformer界面创建一个模拟器。

public interface ITransformer
{
    String Transform( String input );
}

我可以创建一个模拟器,它根据特定的输入返回给定的字符串:

var mock = new Mock<ITransformer>();
mock.Setup(s => s.Transform("foo")).Returns("bar");

我想要做的是创建一个带有Transform()方法的模拟,它回应传递给它的任何内容。我该怎么做呢?它甚至可能吗?

我意识到我的问题可能会破坏Moq和模拟一般应该工作的方式,因为我没有指定固定的期望。

我也知道我可以轻松创建自己的类来完成这项工作,但我希望找到一种可以在类似情况下使用的通用方法,而不必每次都定义一个新类。

2 个答案:

答案 0 :(得分:4)

var mock = new Mock<ITransformer>();
m.Setup(i => i.Transform(It.IsAny<string>())).Returns<string>((string s) => { return s;});

答案 1 :(得分:2)

var mock = new Mock<ITransformer>();
mock.Setup(t => t.Transform(It.IsAny<string>())).Returns((String s) => s);

这应该回显提供给方法的任何内容。