簡體   English   中英

在 Laravel 8 中,如何在單元測試時獲取請求的 url?

[英]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();

這是另一種方法:解析標題的LocationjobId ,但在我看來這是一種錯誤的方式:

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM