2015-11-26 3 views
0

У меня есть следующий код в моем блоке тестируемой: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.

Любая помощь в обеспечении я могу проверить звонки будет очень высокую оценку.

+0

Как выглядит ваш код, который вы хотите проверить? Не могли бы вы разместить более одной строки? – dee

ответ

0

В этом случае я обнаружил, что не стоит выяснять, как это сделать ng команда Moq не достигла и вместо этого включила этот модульный тест в интеграционный тест, проверка правильности данных была в базе данных.

Если у кого-то есть лучшее решение, я могу это изменить.

Смежные вопросы