Moq путаница - Настройка () v Настройка <> () - PullRequest
6 голосов
/ 20 июля 2011

У меня макет создается следующим образом:

var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();

Интеллектуальный смысл для метода установки говорит следующее:

"Определяет настройку по типу макетадля вызова void возвращающего метода. "

Но смоделированный метод p.GetBytes () не возвращает void, он возвращает байтовый массив.

В качестве альтернативы другой метод установки определен как «Настройка <>, и я могу создать свой макет следующим образом:

var mock = new Mock<IPacket>(MockBehavior.Strict);
mock.Setup<byte[]>(p => p.GetBytes()).Returns(new byte[] { }).Verifiable();

Интеллектуальный смысл этого метода установки говорит:

"Указывает настройку для ложного типа для вызова метода возврата значение ."

.
.
В зависимости от того, чтометод, который я выбираю, он компилирует и тестирует ОК.Итак, я не понимаю, каким образом я должен делать это.В чем разница между .Setup () и .Setup <> (), и я делаю это правильно?

Документы для Moq несколько не хватает, скажем так.:)

1 Ответ

8 голосов
/ 20 июля 2011

Компилятор выводит из лямбды, переданной в Setup(), что вы хотели назвать универсальной версией, и поэтому он счастливо выводит обобщенный аргумент для вас.Если вы используете Reflector, вы увидите, что первый пример кода на самом деле вызывает Setup<byte[]>().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...