Moq 中的无退货方法

乔什蒙雷亚尔

我使用 .NET Standard 创建了一个单元测试类库,这就是我实现它的方式。我使用的 Moq 版本是4.10.0

[TestFixture]
public class EmployeeBusinessTests
{
    private Employee _employee;
    private Mock<IEmployeeRepository> _employeeRepository;
    private Mock<IUnitOfWork> _unitOfWork;

    private EmployeeBusiness _employeeBusiness;

    [SetUp]
    public void SetUp()
    {
        _employee = new Employee
        {
            Id = 1,
            FirstName = "John",
            LastName = "Smith",
            BirthDate = new DateTime(1965, 12, 31)
        };

        _employeeRepository = new Mock<IEmployeeRepository>();
        _unitOfWork = new Mock<IUnitOfWork>();
    }

    [Test]
    public void AddEmployee_EmployeeIsNull_ReturnNull()
    {
        _employeeRepository.Setup(er => er.Add(new Employee()))
            .Returns(_employee); // No Returns method!

        // … Other code here
    }
}

你能帮我理解为什么我找不到Returns()方法吗?

欧文·鲍林

正如评论中所述,您的Add方法是void,因此您不能Returns在您的Setup.

对于您要实现的目标,请查看 usingCallback而不是Returns

_employeeRepository.Setup(er => er.Add(It.IsAny<Employee>)).Callback<Employee>(e => _employee = e);

// Add code here to perform actions

Assert.IsNull(_employee);

这是一个基于您发布的代码的简单示例,而不是我实际实现存储库的方式(例如,您Employee在这里只能拥有一个)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章