Класс Mock (или фальшивый класс) будет классом, который вы создаете для удовлетворения зависимостей и делаете свой тест более детерминированным, исключая проблемы в ваших зависимостях.
public interface IMethodInfo
{
string Name { get; }
}
Ваш класс моделирования:
FakeMethodInfo : IMethodInfo
{
string Name {get {return "FakeMethod";}}
}
Теперь, в своем модульном тесте, передайте класс FakeMethodInfo
, где вам нужен IMethodInfo
.
Вся цель в том, что вы знаете, что FakeMethodInfo
просто возвращает строку, так что есличто-то не получается, это - это не проблема.
Не знаю, какой контекст у MethodInfo в вашей программе.Лучшим примером будет
interface IUser
{
string UserName {get;}
}
Если бы оно было реализовано в классе, вы бы получили реальное имя пользователя из базы данных.
Теперь, если вы создадите поддельное имя и передадите еговокруг, вы как бы моделируете пользователя, вошедшего в систему без реального пользователя, и исключаете, что любая проблема связана с `IUser.
Посмотрите этот большой ответ, который я опубликовал, о том, почему вы будете использовать насмешку.И пример с Moq.:
Разница между внедрением зависимостей и Mocking Framework (Ninject vs RhinoMock или Moq)