在运行单元测试时尝试更改请求标头“Host”值,但它被更改回 phpunit.xml 中定义的原始值
有没有一种方法可以仅在一次测试中覆盖此值?
/**
* Throw an exception if host value is not matching
* trusted host patterns.
* @group debug
*/
public function testErrorReturnedOnUnmatchedHostValue()
{
$this->withHeaders([
'Host' => 'http://google.com',
])
->get('/')
->assertStatus(500);
}
我尝试过以下方法:
但是该值会更改回原始 url(在 .env 中定义)。
有任何想法吗?
更改主机标头的方法是将域本身添加到 URI。
$response = $this->get("http://google.com/");
您可能也想有一条路线来测试一下?以下是我通过使用 faker 添加随机域将其发挥到极致的方法。
$domain = $this->faker->domainName;
Route::domain($domain)->get('/ping', function() {
return 'pong';
});
$response = $this->get("http://$domain/ping");
无法通过
HOST
设置withHeaders
,并且无法使用HTTP_HOST
设置withServerVariables
。但是,您可以使用 URL
外观来设置它,然后在测试结束时将其设置回来。以下是片段,请随意放置在测试/设置/拆卸中:
$original_url = URL::current();
URL::forceRootUrl('http://my.domain.com');
... call $this->get/post etc
URL::forceRootUrl($original_url);