Moq VerifySet (Action) заменяет устаревшую ошибку компиляции выражения - программирование
Подтвердить что ты не робот

Moq VerifySet (Action) заменяет устаревшую ошибку компиляции выражения

Ссылаясь на этот вопрос:

Moq как заменить устаревшее выражение

У меня есть следующее:

[Test]
public void OnSearchRequest_ViewFiresEvent_EventIsHandled()
{
    // Arrange
    Mock<IViewUsers> view = new Mock<IViewUsers>();
    Users users = new Users(view.Object);

    // Act
    view.Raise(v => v.SearchForUsers += null, this, new SearchEventArgs());

    // Assert
    view.VerifySet(v=> v.SearchResult = It.IsAny<List<IUser>>());

}

Первоначально у меня было:

        // Assert
        view.VerifySet(v => v.SearchResult);

Но получалось предупреждение:

'Moq.MockExtensions.VerifySet(Moq.Mock, System.Linq.Expressions.Expression > ) ' устаревший: "Заменено VerifySet (Action)"

Итак, я нашел вопрос, упомянутый выше, и изменил его на соответствие, но теперь я ВСЕГО получаю это предупреждение, а кроме того, жесткая ошибка в "v.SearchResult" в вызове VerifySet:

Дерево выражений может не содержать оператор присваивания.

Я не вижу, что я форматирую это ненадлежащим образом - так почему же он не признает это как действие, как предполагает другой вопрос?

4b9b3361

Ответ 1

Я нашел нечто относительно близкое к тому, о чем вы просите. Moq как заменить устаревшее выражение Я не знаю, помогает ли это, потому что я использовал только mock.Setup и mock.Verify.

Также, как упоминалось выше, попробуйте использовать лямбда-выражения в вашем It.IsAny, чтобы точно определить мелкие вещи таким образом. Если проверка не удалась, вы точно знаете, где она не удалась. Особенно, если вы ожидаете значения в определенной позиции, например.

Ответ 2

Я не знаю, помогает ли это, но в прошлом у меня были проблемы с использованием It.IsAny<> со списками. Не могли бы вы попробовать что-то вроде It.Is<List<IUser>>(l => l != null)?