Тест POST Symfony2 API с использованием YAML/Faker
Я строю REST API с использованием Symfony2. Я уже использую связку Liip для своих функциональных тестов вместе с Алисой и Факером для генерации всех приборов. Однако у меня нет особых проблем, когда я хочу напрямую тестировать сами вызовы POST, поскольку длинные данные JSON включены в данные POST, что делает мои функции довольно длинными, безобразными и нечитаемыми.
Я решил убрать поддельный JSON из класса, преобразовав их в файлы YAML и затем загрузив их с помощью синтаксического анализатора Symfony:
private function loadYaml($resource){
$data = Yaml::parse(file_get_contents('src/AppBundle/DataFixtures/YAML/' . $resource . '.yml'));
return $data;
}
Кажется, это работает довольно хорошо, так как я могу легко преобразовать их обратно в объекты JSON и затем использовать это в вызове:
$postData = json_encode($this->loadYaml('newapplication'));
$this->client->request(
'POST',
'/api/application/save/',
array('data' => $postData), // The Request parameters
array(), // Files
array(),
'mybody', // Raw Body Data
true
);
Мой первый вопрос: это правильный подход? Есть ли какая-то связка, которую я пропустил, которая облегчит мою жизнь?
Мой второй вопрос: можно ли будет использовать Faker в рамках этих конструкций YAML. На моих приборах я вызываю функции Faker (например,
Большое спасибо!;)
1 ответ
На ваш вопрос о пакете, WebTestCase из Symfony\Bundle\FrameworkBundle\Test\WebTestCase действительно приятно провести тестирование по REST API в проекте Symfony.
В POST данные находятся в теле и не имеют параметра. ( Как параметры отправляются в запросе HTTP POST?)
Пытаться
$this->client->request(
'POST',
'/api/application/save/',
array(), // The Request parameters
array(), // Files
array(),
$postData, // Raw Body Data
true
);