[英]In Laravel 8, how do I get the url of a request when unit testing?
我想在 Laravel 8 中編寫一個單元測試來測試一個創建新實體的POST
請求。 在該請求中,創建了一個job_id
並且 url 附加了該job_id
。 我希望檢索該job_id
。 我怎么做?
例如,
$route = route( 'job.store', $payload );
$response = $this->followingRedirects()->post( $route );
$response
應該重定向到類似http://localhost:9080/sales/job/J00561
。 我想獲取 url 以便我可以獲取job_id
,即J00561
。
我怎么做?
對於這種情況,因為它不是 API 並且您無法從響應中獲取創建的作業 ID,我建議如下:
// create
$createResponse = $this->post(route('job.store', $payload))
->assertSuccessful();
// get created job by params
$job = Job::where($payload)->find();
// check creation
$this->assertNotNull($job);
// assert redirect
$createResponse->assertRedirect($showRoute = route('job.show', $jobId));
$this->get($showRoute)->assertSuccessful();
這是另一種方法:解析標題的Location
為jobId
,但在我看來這是一種錯誤的方式:
$response = $this->post(route('job.store', $payload))
->assertSucceful();
$params = explode('/', parse_url($response->headers->get('Location'))['path']);
$jobId = array_pop($params);
$response->assertRedirect($showRoute = route('job.show', $jobId));
$this->get($showRoute)->assertSuccessful();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.