Merge pull request #461 from pestphp/json_fix

Fixes `json` in Higher Order Expectations
This commit is contained in:
Nuno Maduro
2022-01-21 16:46:30 +00:00
committed by GitHub
3 changed files with 18 additions and 1 deletions

View File

@ -77,6 +77,11 @@ final class HigherOrderExpectation
return $this->expect($value);
}
public function json(): HigherOrderExpectation
{
return new self($this->original, $this->expectation->json()->value);
}
/**
* Dynamically calls methods on the class with the given arguments.
*

View File

@ -124,6 +124,7 @@
✓ it can compose complex expectations
✓ it can handle nested method calls
✓ it works with higher order tests
✓ it can call the json method in higher order expectations
PASS Tests\Features\Expect\HigherOrder\methodsAndProperties
✓ it can access methods and properties
@ -720,5 +721,5 @@
✓ it is a test
✓ it uses correct parent class
Tests: 4 incompleted, 9 skipped, 478 passed
Tests: 4 incompleted, 9 skipped, 479 passed

View File

@ -74,8 +74,19 @@ it('works with higher order tests')
->name()->toEqual('Has Methods')
->books()->each->toBeArray;
it('can call the json method in higher order expectations', function () {
expect(new HasMethods())
->getJsonContent()->json()->id->toBe(1)->toBeGreaterThan(0)
->getJsonContent()->json()->email->toBe('foo@bar.com');
});
class HasMethods
{
public function getJsonContent(): string
{
return '{"id":1,"username":"dan","email":"foo@bar.com"}';
}
public function name()
{
return 'Has Methods';