Ошибка Mocking метод с двумя параметрами - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть хранилище с таким методом.

FindFirstOrDefault<TEntity>(Expression<Func<TEntity, bool>> expression, params Expression<Func<TEntity, object>>[] includes)

Моя настройка Mock выглядит следующим образом:

_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), It.IsAny<Expression<Func<Order, object>>[]>()))

Я также пробовал это:

_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))

Раньше, когда у меня был только один параметр для этого метода FindFirstOrDefault (параметр expression), он работал нормально. Теперь, когда я добавил параметр includes, я получаю следующую ошибку:

Invalid callback. Setup on method with 2 parameter(s) cannot invoke callback with different number of parameters (1).

Почему я получаю сообщение об ошибке, в котором передается только 1 параметр при передаче два?

1 Ответ

0 голосов
/ 11 апреля 2020

Получается, что я просто забыл обновить Returns, чтобы включить дополнительный параметр.

Вся моя установка выглядела так:

_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>()))
            .Returns((Expression<Func<Order, bool>> expression =>
            {
                // RETURN LOGIC
            });

С моим новым параметром я обновил до это:

_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))
            .Returns((Expression<Func<Order, bool>> expression) =>
            {
                // RETURN LOGIC
            });

Это вызвало ошибку, которую я получал.

Что мне действительно нужно было это:

_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))
            .Returns((Expression<Func<Order, bool>> expression, Expression<Func<Order, object>>[] includes) =>
            {
                // RETURN LOGIC
            });
...