我很滿意Moq,直到我需要測試一個以委託爲參數並且有UnsupportedException的方法。該問題也被提及here和Moq issue list。模擬框架,支持以委託爲參數嘲諷方法
有沒有支持這種嘲諷的框架?
例如:
///
/// Interfaces
///
public interface IChannelFactory<T> {
TReturn UseService<TReturn>(Func<T, TReturn> function);
}
public interface IService {
int Calculate(int i);
}
///
/// Test
///
Mock<IChannelFactory<IService>> mock = new Mock<IChannelFactory<IService>>();
// This line results in UnsupportedException
mock.Setup(x => x.UseService(service => service.Calculate(It.IsAny<int>()))).Returns(10);
這是實際的代碼,還是隻是一些樣本片段?我問,因爲它看起來沒有完全指定。例如,當你創建你的模擬,那裏不應該有另一個泛型的層次? '新模擬>'? –
2012-02-10 18:40:06
啊,是的,謝謝你的更正。這不是複製粘貼,因此是錯誤。 – henginy 2012-02-10 23:14:51
在設置行中,您傳遞一個表達式(service => service.Calculate())。你需要傳遞一些解析到委託的東西,例如Func <>對象。 – IanNorton 2012-02-11 07:17:44