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:
Дерево выражений может не содержать оператор присваивания.
Я не вижу, что я форматирую это ненадлежащим образом - так почему же он не признает это как действие, как предполагает другой вопрос?
Ответы
Ответ 1
Я нашел нечто относительно близкое к тому, о чем вы просите. Moq как заменить устаревшее выражение Я не знаю, помогает ли это, потому что я использовал только mock.Setup
и mock.Verify
.
Также, как упоминалось выше, попробуйте использовать лямбда-выражения в вашем It.IsAny
, чтобы точно определить мелкие вещи таким образом. Если проверка не удалась, вы точно знаете, где она не удалась. Особенно, если вы ожидаете значения в определенной позиции, например.
Ответ 2
Я не знаю, помогает ли это, но в прошлом у меня были проблемы с использованием It.IsAny<>
со списками. Не могли бы вы попробовать что-то вроде It.Is<List<IUser>>(l => l != null)
?