Как я должен тестировать контроллеры? Прежде всего, я издеваюсь над результатами базы данных, которые ясны. Но что тогда? Должен ли я переписать код из контроллеров и проверить все запросы против mocks? Или, скорее, вызовите классы контроллера и проверьте общий результат? Я имею в виду, например, наличие этого класса:
class User {
public function foo()
{
// query 1
// query 2
return $someresults;
}
}
Должен ли я проверить его так:
class TestUser {
public testFoo()
{
// query1
// assertions
// query2
// assertions
// results asserions
}
}
Или, скорее, как:
class TestUser {
public function testFoo()
{
$user = new User($mockEntityManager);
// assertions on $user object
}
}
Каков правильный способ сделать это? Тестирование всех запросов удваивает код и создает проблемы с внешними запросами в классах репозитория (не уверен, могу ли я это высмеять). Тестирование общих результатов в порядке, но методы в контроллерах возвращают шаблоны представлений, поэтому я не уверен, как тестировать ответы на базы данных там.
Вы не должны управлять тестовыми контроллерами, так как они не содержат никакой логики. Вам нужно будет выполнить функциональный тест, чтобы вы могли проверить, как он себя ведет, как вы этого хотите.
ИМХО наилучшим подходом является определение контроллера как служб (как описано здесь), поэтому вам не нужен веб-браузер для обработки запроса/ответа, а только взаимодействует с его дефолтными сервисами.
Проверьте эту статью для получения дополнительной информации.
Надеюсь, что эта помощь