需要对使用最小起订量语法进行很好的解释



我似乎在通过示例获取最小起订量语法时遇到问题。除了最小起订量网站之外,我还想建议在哪里查看,以了解模拟各种界面的用法。

例如,

我想了解我究竟如何继续模拟这个或那个接口方法,并且能够,例如,了解开发人员为什么写这样的东西:

        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;

最新更新