2009-12-08 87 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

相關問題