为什么此代码不起作用?
var channelsList = new List<IChannel>
{
Mock.Of<IChannel>(m => m == new ChannelOne()),
Mock.Of<IChannel>(m => m == new ChannelTwo()),
};
答案 0 :(得分:2)
假设IChannel
被定义为:
public interface IChannel
{
int DoWork();
int DoOtherWork();
}
然后您可以使用Moq.Linq
定义不同的行为,如下所示:
var channelsList = new List<IChannel>
{
Mock.Of<IChannel>(m => m.DoWork() == 1 && m.DoOtherWork() == 1),
Mock.Of<IChannel>(m => m.DoWork() == 2)
};
Assert.Equal(1, channelsList.First().DoWork());
Assert.Equal(2, channelsList.Last().DoWork());
但是有一个限制,例如您不能设置Throws
...
LINQ to Mocks非常适合快速找出通常不需要进一步验证的依赖项。。如果以后确实需要验证这些模拟的某些调用,则可以使用
Mock.Get(instance)
轻松地检索它们。
注意: 强调我的