При написании тестовых случаев вы в основном тестируете сценарий до и после. Перед выполнением теста вы хотите инициализировать чистую среду ( каждый раз ), чтобы знать, чего ожидать. Затем вы запустите свои методы и протестируете, как выглядит среда, и подтвердите, оказало ли предпринятое вами действие желаемый эффект.
Например, для тестирования вашего метода 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 ().