Вы читали какое-нибудь руководство по началу работы для Moq?Это довольно просто:
var mock = new Mock<MyConverter>();
var expected = ...;
mock.Setup(m => m.ConvertBack(...)).Returns(expected);
var actual = m.Object.ConvertBack(...);
Assert.AreEqual(expected, actual);
Но, конечно, это плохой пример, потому что вы на самом деле не позволяете ему тестировать реальные классы.Насмешка полезна для обеспечения насмешки над реальным классом, для которого вы хотите выполнить модульное тестирование и который, как вы ожидаете, вызовет смоделированный вами метод.
Обновление
После прочтения вашего вопроса снова (с заголовком, обновленным Энтони Пеграмом), мне интересно, пытаетесь ли вы проверить реальную реализацию ConvertBack
, высмеивая реализацию Convert
.Если это так, у меня есть пара наблюдений:
ConvertBack
, вероятно, не следует объявлять virtual
, по крайней мере, в этом примере, - ВыВозможно, вы захотите провести рефакторинг вашего кода, чтобы
Convert
и ConvertBack
были частью разных сервисов: я чувствую запах кода, возможно, вызванный отсутствием разделения проблем.
Если вы 'Убедитесь, что вам нужно сделать это, но все равно должно быть относительно просто:
var mock = new Mock<MyConverter>() {CallBase = true}; // hat tip: adrift
mock.Setup(m => m.Convert(...)).Returns(...);
var expected = ...;
var actual = m.Object.ConvertBack(...);
Assert.AreEqual(expected, actual);