Tôi đang cố gắng viết một trường hợp thử nghiệm API cho một chức năng điều khiển bằng cách sử dụng codeception, và tôi đang gặp vấn đề khi tuyến đường đến chức năng bộ điều khiển không xuất hiện được đánh giá chính xác, và việc đánh giá có vẻ khác nhau tùy thuộc vào những gì tôi có trong trường hợp thử nghiệm của mình.Laravel 5/Codeception không định tuyến chính xác
Đây là một mẫu mã từ trường hợp thử nghiệm của tôi:
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);
}
Tôi có một tập tin routes.php chứa các đường bay:
Route::get('/', ['as' => 'home', 'uses' => '[email protected]']);
Route::get('register', ['as' => 'getRegister', 'uses' =>'[email protected]']);
Route::post('register', ['as' => 'postRegister', 'uses' => '[email protected]']);
Tôi đã chèn một số báo cáo debug vào các lớp điều khiển của tôi vì vậy để tôi có thể xem những tuyến đường nào chạy như sau:
Log::debug('GET register'); // or GET index or POST register, etc
Hiện tại tôi có tác dụng phụ ed xuống tất cả mọi thứ từ các lớp điều khiển của tôi để chỉ các câu lệnh debug được bao gồm.
Khi tôi chạy test như trên, tôi nhận được kết xuất debug sau:
GET register
GET index
... do đó, có vẻ như sendPOST ('đăng ký', ...) thực sự tuyến đường đến các tuyến đường GET cho "/" thay vì tuyến đường POST cho "/ đăng ký". Bên ngoài của trường hợp kiểm tra tất cả mọi thứ hoạt động bình thường - Tôi có thể POST để các tuyến đường đăng ký tốt, định tuyến xuất hiện để làm việc OK, vấn đề chỉ xuất hiện bên trong một trường hợp thử nghiệm codeception.
Nếu tôi thay đổi trường hợp thử nghiệm vì vậy mà tôi đang làm việc sendGET và sendPOST bên trong gọi chức năng tương tự, ví dụ như thế này:
// tests
public function testPostRegister(ApiTester $I)
{
$I->sendGET('register');
$I->seeResponseCodeIs(200);
$I->sendPOST('register', [
// set the data in here
]);
$I->seeResponseCodeIs(200);
}
sau đó tôi thấy debug đầu ra này:
GET register
GET register
... do đó bằng cách chèn sendGET vào cùng chức năng với sendPOST, nó đã thay đổi hành vi sendPOST để nó bây giờ định tuyến đến tuyến GET để đăng ký thay vì tuyến GET cho chỉ mục (nhưng vẫn chưa định tuyến đến đúng tuyến đường POST).
Tôi đã thử bật xdebug và không có bất kỳ manh mối nào từ đầu ra xdebug cũng như những gì đang xảy ra.
Vấn đề chính xác của bạn là gì? –