diff --git a/src/HttpClientMock/MockRequestBuilderCollection.php b/src/HttpClientMock/MockRequestBuilderCollection.php index 7422794..92958b5 100644 --- a/src/HttpClientMock/MockRequestBuilderCollection.php +++ b/src/HttpClientMock/MockRequestBuilderCollection.php @@ -68,4 +68,9 @@ public function count(): int { return count($this->requestBuilders); } + + public function reset(): void + { + $this->requestBuilders = []; + } } diff --git a/tests/HttpClientMock/MockRequestBuilderCollectionTest.php b/tests/HttpClientMock/MockRequestBuilderCollectionTest.php index 4dca0b1..926426a 100644 --- a/tests/HttpClientMock/MockRequestBuilderCollectionTest.php +++ b/tests/HttpClientMock/MockRequestBuilderCollectionTest.php @@ -13,6 +13,7 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; +use Symfony\Component\HttpClient\Response\MockResponse; #[CoversClass(MockRequestBuilder::class)] #[CoversClass(MockRequestBuilderCollection::class)] @@ -237,6 +238,51 @@ public function testAssertThatFails(): void $this->fail('Expected assertion was not thrown'); } + public function testReset(): void + { + $collection = new MockRequestBuilderCollection(); + $collection->addMockRequestBuilder( + (new MockRequestBuilder()) + ->method('GET') + ->willRespond(new MockResponseBuilder()), + ); + + self::assertCount(1, $collection); + + $collection->reset(); + + self::assertCount(0, $collection); + } + + public function testResetPreventsStaleCallbacks(): void + { + $collection = new MockRequestBuilderCollection(); + + $collection->addMockRequestBuilder( + (new MockRequestBuilder()) + ->method('GET') + ->uri('/test') + ->onMatch(static function (): void { + // This callback should not be called after reset + }) + ->willRespond(new MockResponseBuilder()), + ); + + $collection->reset(); + + $collection->addMockRequestBuilder( + (new MockRequestBuilder()) + ->method('GET') + ->uri('/test') + ->willRespond(new MockResponseBuilder()), + ); + + // This should not throw "Value of type null is not callable" error + $response = $collection('GET', '/test', []); + + self::assertInstanceOf(MockResponse::class, $response); + } + /** @return mixed[] */ public static function requests(): array {