你如何使用Moq创建回声模拟?
问题描述:
我正在为我的ITransformer
界面创建一个模拟。你如何使用Moq创建回声模拟?
public interface ITransformer
{
String Transform(String input);
}
我可以创建返回基于特定输入一个给定的字符串进行模拟:
var mock = new Mock<ITransformer>();
mock.Setup(s => s.Transform("foo")).Returns("bar");
我想要做的就是创建一个Transform()
方法相呼应,无论是传递给模拟它。我会如何去做这件事?它甚至有可能吗?
我意识到我的问题可能会颠覆Moq和嘲笑一般应该工作的方式,因为我没有指定一个固定的期望。
我也知道我可以很容易地创建自己的类来做到这一点,但我希望找到一种通用方法,可以在类似情况下使用,而无需每次都定义一个新类。
答
var mock = new Mock<ITransformer>();
mock.Setup(t => t.Transform(It.IsAny<string>())).Returns((String s) => s);
这应该回显无论供给到所述方法。
答
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
虽然所有答案都有帮助,但这是最清楚的。 – ctford 2009-12-09 12:38:28
想知道那It.IsAny,只是从来没有机会查找它。 – Rangoric 2011-06-16 13:12:27