diff --git a/src/HigherOrderExpectation.php b/src/HigherOrderExpectation.php index 6e2ed23f..4cb6fc49 100644 --- a/src/HigherOrderExpectation.php +++ b/src/HigherOrderExpectation.php @@ -63,6 +63,16 @@ final class HigherOrderExpectation return $this; } + /** + * Creates a new expectation. + * + * @param mixed $value + */ + public function and($value): HigherOrderExpectation + { + return new self($this->expect($value), $value); + } + /** * Dynamically calls methods on the class with the given arguments. * diff --git a/tests/Features/Expect/HigherOrder/methodsAndProperties.php b/tests/Features/Expect/HigherOrder/methodsAndProperties.php index f75f698a..08c4a3bc 100644 --- a/tests/Features/Expect/HigherOrder/methodsAndProperties.php +++ b/tests/Features/Expect/HigherOrder/methodsAndProperties.php @@ -22,6 +22,17 @@ it('can handle nested methods and properties', function () { ->newInstance()->books()->toBeArray(); }); +it('can start a new higher order expectation using the and syntax', function () { + expect(new HasMethodsAndProperties()) + ->toBeInstanceOf(HasMethodsAndProperties::class) + ->meta->toBeArray + ->and(['foo' => 'bar']) + ->toBeArray() + ->foo->toEqual('bar'); + + expect(static::getCount())->toEqual(4); +}); + class HasMethodsAndProperties { public $name = 'Has Methods and Properties';