我似乎在通过示例获取最小起订量语法时遇到问题。除了最小起订量网站之外,我还想建议在哪里查看,以了解模拟各种界面的用法。
例如,我想了解我究竟如何继续模拟这个或那个接口方法,并且能够,例如,了解开发人员为什么写这样的东西:
daoMock.Setup(d => d.Get(It.Is<Expression<Func<ConfigurationEntity, bool>>>(e => ExpressionMatchesEntityWithKey(e, TestKey))))
.Returns(new List<ConfigurationEntity> {configEntity});
提前感谢!
正如@Jakub所建议的那样,github页面实际上是一个很好的起点。
无论哪种方式,我都会解释您发布的示例。假设您有此界面和此设置:
public interface IDao
{
IEnumerable<ConfigurationEntity> Get(Expression<Func<ConfigurationEntity, bool>> expression) {...}
}
var daoMock = new Mock<IDao>();
daoMock.Setup(d => d.Get(It.Is<Expression<Func<ConfigurationEntity, bool>>>(e => ExpressionMatchesEntityWithKey(e, TestKey))))
.Returns(new List<ConfigurationEntity> {configEntity});
此设置告诉模拟在以下情况下返回包含configEntity
的列表:
Get
方法称为- 带有类型
Expression<Func<ConfigurationEntity, bool>>
的参数 - 和
ExpressionMatchesEntityWithKey(e, TestKey)
(其中e
是作为参数传入的表达式)返回 true。
所以,基本上,当你在模拟对象上调用 Get
方法时,Moq 会检查参数的类型是否正确,检查ExpressionMatchesEntityWithKey(e, TestKey)
是否返回 true,然后返回一个包含 configEntity
的列表。
默认情况下,如果不满足这些要求中的任何一个,则模拟对象将返回 IEnumerable<ConfigurationEntity>
的默认值,即 null
。
现在,您可以检索模拟对象并对其进行任何操作。
IDao dao = daoMock.Object;