Я пытаюсь написать тестовый пример API для функции контроллера с использованием кодагенератора, и я сталкиваюсь с проблемой, когда маршрут к функции контроллера не представляется корректным, и оценка кажется разной в зависимости на том, что у меня есть в моем тестовом случае.
Вот пример кода из моего тестового примера:
use \ApiTester;
class CustomerRegisterCest
{
// tests
public function testGetRegister(ApiTester $I)
{
$I->sendGET('register');
$I->seeResponseCodeIs(200);
}
public function testPostRegister(ApiTester $I)
{
$I->sendPOST('register', [
// set the data in here
]);
$I->seeResponseCodeIs(200);
}
У меня есть файл route.php, содержащий эти маршруты:
Route::get('/', ['as' => 'home', 'uses' => '[email protected]']);
Route::get('register', ['as' => 'getRegister', 'uses' =>'[email protected]']);
Route::post('register', ['as' => 'postRegister', 'uses' => '[email protected]']);
Я вставил некоторые инструкции debug в мои классы контроллеров, чтобы я мог видеть, какие маршруты запускаются, например:
Log::debug('GET register'); // or GET index or POST register, etc
В настоящий момент я удалил все из своих классов контроллеров, чтобы включить только операторы отладки.
Когда я запускаю тестовый пример, как указано выше, я получаю следующий вывод отладки:
GET register
GET index
... поэтому кажется, что sendPOST ('register',...) фактически направляет маршрут GET для "/" вместо маршрута POST для "/register". За пределами тестового сценария все работает нормально - я могу нормально настроить POST на пути регистрации, маршрутизация работает нормально, проблема возникает только в тестовом случае с кодом.
Если я изменю тестовый пример, так что я делаю sendGET и sendPOST внутри одного вызова функции, например:
// tests
public function testPostRegister(ApiTester $I)
{
$I->sendGET('register');
$I->seeResponseCodeIs(200);
$I->sendPOST('register', [
// set the data in here
]);
$I->seeResponseCodeIs(200);
}
то я вижу этот вывод отладки:
GET register
GET register
... так что, вставив sendGET в ту же функцию, что и sendPOST, он изменил поведение sendPOST, так что теперь он маршрутизируется на маршрут GET для регистрации вместо маршрута GET для индекса (но все равно не будет маршрут к правильному маршруту POST).
Я попытался включить xdebug и не имею никаких подсказок из вывода xdebug относительно того, что происходит.