首页 > 解决方案 > 如何使用表达式设置模拟?

问题描述

我应该如何在这里设置表达式?

[TestMethod]
public void SaveLocation()
{   
    //Arrange
    var dbMock = new Mock<BandItEntities>();
    dbMock.Setup(x => x.Users.SingleOrDefault(It.IsAny<Expression<Func<User, bool>>>)).Returns(new User());
    var userAccess = new UsersAccess(dbMock.Object);
    //Act
    userAccess.SaveLocation(It.IsAny<User>());
    //Assert
    dbMock.Verify(x => x.SaveChanges(), Times.Once);
}

正是这一行代码

dbMock.Setup(x => x.Users.SingleOrDefault(It.IsAny<Expression<Func<User, bool>>>)).Returns(new User());

我在这里为这个方法创建了一个测试:

public void SaveLocation(User user)
{
    var validUser = db.Users.SingleOrDefault(u => u.ID == user.ID);
    validUser.Latitude = user.Latitude;
    validUser.Longitude = user.Longitude;
    db.SaveChanges();
}

现在我得到这个错误:

错误 CS1503 参数 2:无法从“方法组”转换为“表达式>”

标签: c#installationmockingexpression

解决方案


推荐阅读