这就是我在测试用例
中获得响应的方式$response = $this->call('POST','/api/auth/login',['username'=>'xx','password'=>'xxx'], [/* cookies */], [/* files */], ['HTTP_ClientSecret' => 'xxxx']);
然后我们可以像这样获得响应内容
$response->getContents()
我想知道如何获取响应标头数据?
答案 0 :(得分:5)
做类似的事情:
$response->headers->get('content-type');
或任何你需要的东西。如果您想查看响应标头中的内容,dd($response->headers);
也可能对您有用。
$this->call()
返回Response,它正在扩展Symfony的Response,而headers
是一个ResponseHeaderBag
的对象following methods。
答案 1 :(得分:0)
您实际上不需要get
进行测试,您需要assert
拥有期望值。
说,您要测试throttle middleware
,以确保没有人可以在您的网上商店中尝试太多的信用卡,这是您的单元测试:
$route = route('payment');
$iMax = 60;
for ($i = 1; $i <= $iMax; $i++) {
$response = $this->call('POST', $route, []);
$response->assertHeader('x-ratelimit-limit', $iMax);
$response->assertHeader('x-ratelimit-remaining', $iMax - $i);
$response->assertRedirect();
$response->assertStatus(302);
$this->assertSame(iMax, $response->headers->get('x-ratelimit-limit'));
$this->assertSame(iMax-$i, $response->headers->get('x-ratelimit-remaining'));
}
// log down headers if needed
//\Log::debug($response->headers);
$response = $this->call('POST', $route, []);
$response->assertHeader('x-ratelimit-limit', $iMax);
$response->assertHeader('x-ratelimit-remaining', 0);
$response->assertStatus(429);