Юнит тестирование контроллеров практики

0

Как я должен тестировать контроллеры? Прежде всего, я издеваюсь над результатами базы данных, которые ясны. Но что тогда? Должен ли я переписать код из контроллеров и проверить все запросы против 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
   }

}

Каков правильный способ сделать это? Тестирование всех запросов удваивает код и создает проблемы с внешними запросами в классах репозитория (не уверен, могу ли я это высмеять). Тестирование общих результатов в порядке, но методы в контроллерах возвращают шаблоны представлений, поэтому я не уверен, как тестировать ответы на базы данных там.

  • 0
    Есть слишком много возможных ответов, или хорошие ответы будут слишком длинными для этого формата. Пожалуйста, добавьте детали, чтобы сузить набор ответов или выделить проблему, на которую можно ответить в нескольких параграфах.
Теги:
unit-testing

2 ответа

0

Вы не должны управлять тестовыми контроллерами, так как они не содержат никакой логики. Вам нужно будет выполнить функциональный тест, чтобы вы могли проверить, как он себя ведет, как вы этого хотите.

0

ИМХО наилучшим подходом является определение контроллера как служб (как описано здесь), поэтому вам не нужен веб-браузер для обработки запроса/ответа, а только взаимодействует с его дефолтными сервисами.

Проверьте эту статью для получения дополнительной информации.

Надеюсь, что эта помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню