2009-12-08 89 views
1

我正在为我的ITransformer界面创建一个模拟。你如何使用Moq创建回声模拟?

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

我可以创建返回基于特定输入一个给定的字符串进行模拟:

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

我想要做的就是创建一个Transform()方法相呼应,无论是传递给模拟它。我会如何去做这件事?它甚至有可能吗?

我意识到我的问题可能会颠覆Moq和嘲笑一般应该工作的方式,因为我没有指定一个固定的期望。

我也知道我可以很容易地创建自己的类来做到这一点,但我希望找到一种通用方法,可以在类似情况下使用,而无需每次都定义一个新类。

回答

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

这应该回显无论供给到所述方法。

+0

虽然所有答案都有帮助,但这是最清楚的。 – ctford 2009-12-09 12:38:28

+0

想知道那It.IsAny,只是从来没有机会查找它。 – Rangoric 2011-06-16 13:12:27

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

你的编辑没有任何意义 - 'string'是'System.String'的别名 – 2009-12-09 08:52:52

+0

谢谢你指出。 – 2009-12-09 09:21:13