Я работаю над проектом ASP.NET MVC 2. Мне вручили несколько классов контроллеров с жесткой зависимостью от класса хранилища данных, что-то вроде этого:
public class MyController : Controller
{
MyRepository myRepository = new MyRepository();
// ...
}
Класс MyRepository
- это бетон, а не интерфейс.
По сути, хотя у меня есть доступ для чтения к этому коду, у меня нет прав на запись. Я пытаюсь написать несколько модульных тестов, чтобы убедиться, что это работает. Само собой разумеется, что я не хочу, чтобы действительная база данных попала в этот момент, поэтому ясно, что есть какое-то издевательство.
Я довольно новичок в модульном тестировании и макете, но я прочитал о Moq и думаю, что у меня есть общее представление о том, как это работает. Мне удалось успешно создать простой объект-репозиторий, но проблема в том, что я до сих пор не знаю, как передать его в класс!
Если бы я написал оригинальный код, я бы использовал интерфейс, а не конкретный класс, и я бы написал дополнительный конструктор для внедрения зависимостей. На самом деле я в беспорядке.
Может ли Moq помочь мне передать его в класс (если я высмеиваю MyController
), или мне нужно ходатайствовать о доступе на запись, чтобы я мог провести рефакторинг?