为什么这段代码不起作用?
var channelsList = new List<IChannel>
{
Mock.Of<IChannel>(m => m == new ChannelOne()),
Mock.Of<IChannel>(m => m == new ChannelTwo()),
};
假设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)
轻松检索它们。
注意:强调我的