我是laravel的新手,我正在尝试使用phpunit
命令构建PHPUnit测试。但是,测试一直在说Expected status code 200 but received 400
。当我在Postman上测试相同的uri时,它的效果非常好。
当我使用phpunit
命令时,request()->segment(1)
将返回null
。但是,使用Postman发出请求会返回request()->segment(1)
的正确值,即“api”。
我正在使用dingo包来获取api请求。
任何建议或建议都将不胜感激。
谢谢。
已编辑:我发现问题是当我运行phpunit
之类的命令行时,request()
会将该命令识别为请求。那么,我怎么能到处走走?
这是我的测试代码
ClientTest.php
<?php
namespace Tests\Unit\Client;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ClientTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$response = $this->get('/api/v1/clients/1');
$response->assertStatus(200);
}
}
这是我的api路线代码
路线/ api.php
<?php
use Dingo\Api\Routing\Router;
if ( request()->segment(1) === 'api' ) {
$apiRouter = app(Router::class);
$apiVersion = strtolower(request()->segment(2));
$apiRouter->version($apiVersion, function ($apiRouter) use ($apiVersion)
{
$pathPrefix = 'App\Http\Controllers\Api\V1';
$apiRouter->get($apiVersion.'/clients/{id}', $pathPrefix.'\Client\ClientController@index');
});
}