我很满意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