Модульное тестирование контроллера Play с использованием макетов

Название в значительной степени говорит само за себя. Я хотел бы настроить традиционный тест JUnit, чтобы имитировать зависимости контроллера и запускать тесты против действий.

Я обнаружил, что могу достичь своей цели следующим образом:

public class AccountsControllerTest {
    private controllers.Accounts accountsController;

    @Test
    public void test() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                accountsController = new controllers.Accounts();
                accountsController.setAccountsWorkflow(mock(workflow.Accounts.class));
            }
        });
    }
}

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

Конечно, я могу протестировать контроллеры так, как рекомендует Play, но мое приложение зависит от внешнего веб-сервиса SOAP, поэтому мне нужны модульные тесты, чтобы показать, что наш код работает, когда их серверы не работают.

Итак, как лучше всего провести модульное тестирование контроллера Play с помощью макетов, используя при этом преимущества методов setup()и teardown()?

Редактировать

Я понимаю, что здесь я предполагаю некоторые знания, поэтому для тех, кто не знает, создание контроллера в модульном тесте должно быть заключено в функцию running()или Play! выдаст исключение времени выполнения, говорящее, что приложение не запущено.

8
задан Samo 20 June 2012 в 18:53
поделиться