У меня есть следующий код в моем блоке тестируемой:Moq - Как проверить действие <T>?
transaction.QueueCommand(x => x.AddItemToSet("key", "value"));
Я хочу, чтобы проверить это было вызвано с помощью Moq (я люблю Moq).
Я установил следующую Верификацию в моем тестовом модуле:
m_MockTransaction.Verify(x => x.QueueCommand(y => y.AddItemToSet("key", "value")));
К сожалению, это дает следующее исключение:
Exception брошенному: 'System.NotSupportedException' в Moq.dll
Дополнительная информация: Неподдерживаемое выражение: y => y.AddItemToSet ("ключ", "value")
Я понимаю, это потому, что Moq не может развернуть делегата, чтобы выяснить, совпадают ли вызовы или нет. Интересно, есть ли у кого-то метод для работы над этим ограничением, желательно не слишком противный.
Я видел этот ответ https://stackoverflow.com/a/1120836/282090, который предлагает преобразовать Func в строку, которую затем можно сравнить (это не работает с действием. К сожалению, код в моем тесте не будет таким же, как в моем тестируемом модуле .
например, я хотел бы сделать проверку на «ключ», «значение» в то время как код может передать переменные theKey, theValue.
Любая помощь в обеспечении я могу проверить звонки будет очень высокую оценку.
Как выглядит ваш код, который вы хотите проверить? Не могли бы вы разместить более одной строки? – dee