Нужна помощь в написании файлов тестирования php для проверки моего класса контроллера PHP - PullRequest
0 голосов
/ 12 февраля 2010

, за которым последовала моя предыдущая разработка веб-сайта, мы создали несколько классов контроллеров, соответствующих сущностям, которые появятся при разработке нашего веб-сайта. И наш веб-сайт очень прост: просто торговый сайт для клиентов, чтобы забронировать автобус для путешествий.

Теперь мне назначена сложная задача, которую необходимо выполнить, то есть для одного класса контроллера мне нужно написать тестовый пример, чтобы проверить, работает ли он правильно.

Например, у нас есть класс контроллера под названием «JobsController», например:

models = array ('jobs' => new Jobs ()); } функция __destruct () { Родитель :: __ разрушится (); } функция addJob ($ name, $ desc) { если ($ name == '') { вернуть ложь; }; $ params = array ('name' => $ name, 'description' => $ desc); вернуть $ this-> models ['jobs'] -> add ($ params); } функция modifyJob ($ jid, $ name, $ desc) { if ($ jid == '' || $ name == '') { вернуть ложь; }; $ params = array ('name' => $ name, 'description' => $ desc); вернуть $ this-> models ['jobs'] -> modify ($ jid, $ params); } функция removeJob ($ jid) { если ($ jid == '') { вернуть ложь; }; вернуть $ this-> models ['jobs'] -> remove ($ jid); } функция getJob ($ jid) { return $ this-> models ['jobs'] -> getInfo ($ jid); } функция getAllJobs () { return $ this-> models ['jobs'] -> getAll (); } } ?>

и все остальные классы контроллеров почти одинаковы, только с изменениями имени.

Теперь мне очень нужно, чтобы вы, ребята, немного помогли мне, как написать простой php-файл, чтобы проверить, работает ли этот класс контроллеров. После изучения вашего кода я мог бы заставить его работать с остальными контроллерами самостоятельно. .

Большое спасибо!

1 Ответ

4 голосов
/ 12 февраля 2010

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

Например, для тестирования вашего метода modifyJob, в котором вы хотите создать среду с заданием, вызовите метод modifyJob со значениями теста, а затем вызовите getJob для того же задания и убедитесь, что возвращаемое значение имеет значения, совпадающие с тем, что вы передали modifyJob:

function testModifyJob() {
  // create clean, known environment
  $controller = new JobsController();
  $job_id = $controller->addJob('name', 'description');

  // run the action
  $controller->modifyJob($job_id, 'new name', 'new description');

  //test the results
  $job = $controller->getJob($job_id);
  $result = $job['name'] == 'new name' && $job['description'] == 'new description';

  return $result;
}

Для тестирования вашего контроллера вы захотите написать контрольные примеры, подобные приведенным выше, для каждого из методов, предоставляемых классом, чтобы обеспечить доверие к объекту в вашей системе.

При написании тестовых случаев вам, скорее всего, потребуется создать новые методы на вашем контроллере только для ваших тестов, продолжайте создавать их (если ваше назначение позволяет). Это часто встречается в тестовых примерах и обычно помогает дополнить доступную функциональность ваших классов, выявляя эти нюансы (одна из причин, почему у разработки, основанной на тестах, есть такое сильное следование). Примером этого может быть создание метода hasJob ($ job_id), который будет проверять, содержит ли ваша коллекция заданий определенное задание, позволяя вам тестировать такие функции, как deleteJob ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...