在 Lando 中运行的基本 Laravel 功能测试在 get('/') 上失败



我正在尝试在本地Lando环境中运行的Laravel应用程序中运行功能测试。该环境可通过https://catalog.lndo.site访问。

如果我尝试运行示例测试:

class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}

通过CLI使用命令lando php artisan test --testsuite=Feature,我得到一个失败:

• TestsFeatureExampleTest > example
Expected response status code [200] but received 404.
Failed asserting that 200 is identical to 404.
at tests/Feature/ExampleTest.php:18
14▕      */
15▕     public function test_example()
16▕     {
17▕         $response = $this->get('/');
➜  18▕         $response->assertStatus(200);
19▕     }
20▕ }
21▕ 

Tests:  1 failed
Time:   0.66s

假设这个测试没有通过,因为它在一个docker容器中运行。

如果我跟随代码到IlluminateFoundationTestingConcernsMakesHttpRequests::call,我可以看到请求看起来像这样:

GET /catalog.lndo.site HTTP/1.1
Accept:          text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Language: en-us,en;q=0.5
Host:            localhost
User-Agent:      Symfony

显然GET url是不正确的

.env文件是:

APP_NAME=Laravel
APP_ENV=local
DUSK_DRIVER_URL=http://chromedriver:4444/wd/hub
APP_DEBUG=true
APP_URL=catalog.lndo.site
APP_KEY=base64:VsA/HpgsJT1somemorestring=
DB_CONNECTION=mysql
DB_HOST=database
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel

是否有一个配置,我可以改变在兰多,Laravel,或测试套件,将允许这个测试通过?我忍不住想,我只是有一个错误的配置值

您的问题是您没有将http://https://添加到APP_URL的开头。

由于它的解释方式,您必须显式地将协议添加到该ENV

最新更新