Skip to content

Commit 3908325

Browse files
authored
Merge pull request #67 from Sammyjo20/feature/closure-mock-responses
feature/closure mock responses
2 parents ece7cb7 + faf8cf9 commit 3908325

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

tests/Feature/MockRequestTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use Sammyjo20\Saloon\Http\MockResponse;
44
use Sammyjo20\Saloon\Clients\MockClient;
55
use Sammyjo20\Saloon\Http\SaloonRequest;
6+
use Sammyjo20\Saloon\Tests\Fixtures\Mocking\CallableMockResponse;
67
use Sammyjo20\Saloon\Tests\Fixtures\Requests\UserRequest;
78
use Sammyjo20\Saloon\Tests\Fixtures\Requests\ErrorRequest;
89
use Sammyjo20\Saloon\Tests\Fixtures\Connectors\TestConnector;
@@ -210,3 +211,14 @@ function (SaloonRequest $request): MockResponse {
210211
expect($urlResponse->isMocked())->toBeTrue();
211212
expect($urlResponse->json())->toEqual(['request' => 'https://tests.saloon.dev/api/user']);
212213
});
214+
215+
test('you can use a callable class as the mock response', function () {
216+
$mockClient = new MockClient([
217+
UserRequest::class => new CallableMockResponse,
218+
]);
219+
220+
$sequenceResponse = UserRequest::make()->send($mockClient);
221+
222+
expect($sequenceResponse->isMocked())->toBeTrue();
223+
expect($sequenceResponse->json())->toEqual(['request_class' => UserRequest::class]);
224+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Sammyjo20\Saloon\Tests\Fixtures\Mocking;
4+
5+
use Sammyjo20\Saloon\Http\MockResponse;
6+
use Sammyjo20\Saloon\Http\SaloonRequest;
7+
use Sammyjo20\Saloon\Http\SaloonResponse;
8+
9+
class CallableMockResponse
10+
{
11+
public function __invoke(SaloonRequest $request): MockResponse
12+
{
13+
return new MockResponse(['request_class' => get_class($request)]);
14+
}
15+
}

0 commit comments

Comments
 (0)