阅读(1049) (0)

Laravel 8 注入请求

2021-07-05 10:24:28 更新

在伪造响应时,你可能希望检查客户端收到的请求,以确保你的应用发送了正确的数据或请求头。你可以在调用 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();