我有一個 Laravel 8 應用程式,我正在處理我需要使用 GET 引數的地方(例如test?num=1),但不幸的是,我似乎無法弄清楚如何針對此運行單元測驗。
我已經按照我可以在網上找到的指導(包括Laravel phpunit testing get with parameters,看起來非常有希望)但是,這些方法似乎都不起作用。
為了嘗試找出問題,我創建了一個非常簡單的版本,并且得到了相同的行為。如果我直接轉到 URL,它會按預期作業,但單元測驗失敗。
routes\web.php
Route::get('/test', 'TimeController@test')->name('myTest');
app\Http\Controllers\TimeController.php
public function test()
{
return $_GET['num'] ?? "Num not provided";
}
test\Unit\Http\Controllers\TimeControllerTest.php
/** @test */
public function num_test_1()
{
$params = ["num" => "1"];
$response = $this->get('/test?num=1');
$response->assertSeeText("1");
}
/** @test */
public function num_test_2()
{
$params = ["num" => "1"];
$response = $this->get('/test', $params);
$response->assertSeeText("1");
}
/** @test */
public function num_test_3()
{
$params = ["num" => "1"];
$response = $this->call('GET', '/test', $params);
$response->assertSeeText("1");
}
上述所有三個測驗都失敗并顯示訊息
斷言 'Num not provided' 包含“1”失敗。
我什至洗掉了node_modules和vendor檔案夾,以防萬一我有一個損壞的 PHPUnit 包或其他東西。
我錯過了什么明顯的東西嗎?這感覺應該很容易做到,而且很多人以前都會這樣做。
uj5u.com熱心網友回復:
它作業正常。
你應該像這樣改變你的方法:
public function test(Request $request)
{
return $request->input('num') ?? "Num not provided";
}
或使用query方法:
public function test(Request $request)
{
return $request->query('num') ?? "Num not provided";
}
如果沒有找到,您還可以傳遞所需的默認值,而不是使用??:
public function test(Request $request)
{
return $request->input('num', 'Num not provided');
}
public function test(Request $request)
{
return $request->query('num', 'Num not provided');
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/324858.html
