Метод не возвращается в Moq - PullRequest
0 голосов
/ 17 октября 2018

Я создал библиотеку классов модульного теста, используя .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 () метод?

1 Ответ

0 голосов
/ 17 октября 2018

Как уже отмечалось в комментариях, ваш Add метод - void, и поэтому вы не можете использовать Returns на своем Setup.

. То, чего вы пытаетесь достичь, посмотрите наиспользование Callback вместо Returns.

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

// Add code here to perform actions

Assert.IsNull(_employee);

Это упрощенный пример, основанный на вашем опубликованном коде, а не на том, как я на самом деле реализовал бы хранилище (например, у вас может быть только один Employeeздесь).

...