【问题标题】:Laravel 7: unit test set default request header in setUp()Laravel 7:setUp() 中的单元测试集默认请求标头
【发布时间】:2020-07-29 14:59:47
【问题描述】:

我想在 setUp 方法中为测试中的所有请求设置我的标头,而不是分别对所有测试进行。

有没有简单的方法可以做到这一点?

这样的例子:

$this->withHeaders([
            'Authorization' => 'Bearer ' . $response['data']['token'],
            'Accept' => 'application/json'
        ])

收件人:

setUp(){
$this->setHeaders([
            'Authorization' => 'Bearer ' . $response['data']['token'],
            'Accept' => 'application/json'
        ]);
}

【问题讨论】:

    标签: laravel testing globals laravel-7


    【解决方案1】:

    当然。你可以创建一个中间父类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 变量中发生更改,您可以构建一个返回令牌的函数,以便您可以轻松地覆盖各个测试类中的方法。您可以选择一个类属性和一个 setter 方法,它们的工作方式相同。

    如果你想获取你想登录的用户的token,很容易做到。只需让getBearerToken 方法返回类似auth('api')->login($this->authUser);(这将返回实际令牌)并为每个测试文件设置一次$authUser。希望这可以帮助您朝着正确的方向前进。

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多