Laravel 7:单元测试在setUp()中设置默认请求header
Laravel 7: unit test set default request header in setUp()
我想在 setUp 方法中为测试中的所有请求设置 headers,而不是分别对所有测试进行设置。
有没有简单的方法来做到这一点?
例如:
$this->withHeaders([
'Authorization' => 'Bearer ' . $response['data']['token'],
'Accept' => 'application/json'
])
收件人:
setUp(){
$this->setHeaders([
'Authorization' => 'Bearer ' . $response['data']['token'],
'Accept' => 'application/json'
]);
}
当然可以。您可以创建一个中间父 class TestCaseWithToken
(或任何您想命名的名称),它将扩展 PHPUnit\Framework\TestCase
并在那里添加您的覆盖方法
protected function setUp(): void
{
parent::setUp();
// set your headers here
$this->withHeaders([
'Authorization' => 'Bearer ' . $this->getBearerToken(),
'Accept' => 'application/json'
])
}
protected function getBearerToken()
{
return '';
}
此外,如果您的令牌在 $response
变量中发生变化,您可以构建一个 return 令牌的函数,这样您就可以轻松地覆盖单个测试中的方法 classes .您可以选择 class 属性 和 setter 方法,效果相同。
如果你想得到你想登录的用户的token,很容易搞定。只需使 getBearerToken
方法 return 类似于 auth('api')->login($this->authUser);
(这是 return 实际标记)并为每个测试文件设置一次 $authUser
。希望这可以帮助您朝着正确的方向前进。
我想在 setUp 方法中为测试中的所有请求设置 headers,而不是分别对所有测试进行设置。
有没有简单的方法来做到这一点?
例如:
$this->withHeaders([
'Authorization' => 'Bearer ' . $response['data']['token'],
'Accept' => 'application/json'
])
收件人:
setUp(){
$this->setHeaders([
'Authorization' => 'Bearer ' . $response['data']['token'],
'Accept' => 'application/json'
]);
}
当然可以。您可以创建一个中间父 class TestCaseWithToken
(或任何您想命名的名称),它将扩展 PHPUnit\Framework\TestCase
并在那里添加您的覆盖方法
protected function setUp(): void
{
parent::setUp();
// set your headers here
$this->withHeaders([
'Authorization' => 'Bearer ' . $this->getBearerToken(),
'Accept' => 'application/json'
])
}
protected function getBearerToken()
{
return '';
}
此外,如果您的令牌在 $response
变量中发生变化,您可以构建一个 return 令牌的函数,这样您就可以轻松地覆盖单个测试中的方法 classes .您可以选择 class 属性 和 setter 方法,效果相同。
如果你想得到你想登录的用户的token,很容易搞定。只需使 getBearerToken
方法 return 类似于 auth('api')->login($this->authUser);
(这是 return 实际标记)并为每个测试文件设置一次 $authUser
。希望这可以帮助您朝着正确的方向前进。