laravel 如何在运行单元测试时更改请求头“Host”?

fivyi3re  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(113)

在运行单元测试时尝试更改请求头“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);
}

字符串
我尝试了以下几点:

  • 使用putenv('APP_URL=http://www.example.com')google.com
  • 已尝试在setUp()方法中设置头

但是这个值会被改回原来的url(在.env中定义)。
任何想法将不胜感激?

bxpogfeg

bxpogfeg1#

更改主机标头的方法是简单地将域本身添加到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");

相关问题