我正在尝试在本地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