Макет создания нового объекта - PullRequest
1 голос
/ 13 января 2011

Я использую EasyMocks.
Внутри метода создан новый объект.И для этого объекта вызывается метод, который возвращает карту.Как показано ниже

test(){
   Fun f= new Fun();
    Map m =f.getaMap();
}

Я хочу вернуть пользовательскую карту в это время.Как мне это сделать.
Спасибо.

1 Ответ

2 голосов
/ 14 января 2011

Я думаю, из вашего кода вы дали нам метод тестирования, в котором вы тестируете Fun и смотрите на Map, который производит Fun.

Зависимость вводит MapFactory, который создает Map для Fun. Я не уверен в синтаксисе EasyMock, так что mockMapFactory здесь - это смоделированный объект, и у него будет метод для создания карты для вас. Запечатлейте этот метод для создания карты, затем вызовите метод внутри вашего класса вместо использования new.

test() {

    Fun f= new Fun(mockMapFactory);
    Map m =f.getaMap();
}

Взгляните на шаблон проектирования фабрики, который является действительно отличным способом, позволяющим вам избегать вызова new, чтобы вы могли высмеивать создание объектов (и самих объектов, если вам это нужно). Это также означает, что ваш класс больше не несет ответственности за решение, какой тип объекта он создает.

Вы не сможете высмеивать создание Карты внутри его фабрики, когда будете тестировать фабрику. Это нормально. Либо проверьте его осмотром, либо просто убедитесь, что вы получаете правильный вид объекта.

...