Laravel 8 注入请求
在伪造响应时,你可能希望检查客户端收到的请求,以确保你的应用发送了正确的数据或请求头。你可以在调用 Http::fake
方法后调用 Http::assertSent
来完成该操作。
assertSent
方法接受一个回调,该回调将接受一个 Illuminate\Http\Client\Request
实例,并返回一个布尔值。该值用于确认该响应是否符合你的期望。为了使测试通过,必须至少发出一个与给定期望相符的请求:
Http::fake();
Http::withHeaders([
'X-First' => 'foo',
])->post('http://test.com/users', [
'name' => 'Taylor',
'role' => 'Developer',
]);
Http::assertSent(function ($request) {
return $request->hasHeader('X-First', 'foo') &&
$request->url() == 'http://test.com/users' &&
$request['name'] == 'Taylor' &&
$request['role'] == 'Developer';
});
如有需要,你可以使用 assertNotSent
方法断言未被发送的请求:
Http::fake();
Http::post('http://test.com/users', [
'name' => 'Taylor',
'role' => 'Developer',
]);
Http::assertNotSent(function (Request $request) {
return $request->url() === 'http://test.com/posts';
});
也可以使用 assertNothingSent
方法断言空的请求:
Http::fake();
Http::assertNothingSent();