requests[] = compact('httpVerb', 'fullUrl', 'headers', 'arguments'); return new Response([], 'my response', ''); } public function assertRequestsSent(int $expectedCount) { Assert::assertCount($expectedCount, $this->requests); } public function assertLastRequestHas($key, $expectedContent = null) { Assert::assertGreaterThan(0, count($this->requests), 'There were no requests sent'); $lastPayload = Arr::last($this->requests)['arguments']; Assert::assertTrue(Arr::has($lastPayload, $key), 'The last payload doesnt have the expected key. '.print_r($lastPayload, true)); if ($expectedContent === null) { return; } $actualContent = Arr::get($lastPayload, $key); Assert::assertEquals($expectedContent, $actualContent); } public function assertLastRequestContains($key, $expectedContent = null) { Assert::assertGreaterThan(0, count($this->requests), 'There were no requests sent'); $lastPayload = Arr::last($this->requests)['arguments']; Assert::assertTrue(Arr::has($lastPayload, $key), 'The last payload doesnt have the expected key. '.print_r($lastPayload, true)); if ($expectedContent === null) { return; } $actualContent = Arr::get($lastPayload, $key); Assert::assertArraySubset($expectedContent, $actualContent); } public function getLastPayload(): ?array { return Arr::last($this->requests)['arguments']; } }