General
| Object $result ($this) | |
| Expectation should or shouldNot | |
| Matcher Be...() | 
Types of Matchers
| Identity (===) $this->method()->shouldReturn('something'); $this->method()->shouldBe('something'); $this->method()->shouldBeEqualTo('something'); $this->method()->shouldEqual('something'); | |
| Comparison (==) $this->method()->shouldBeLike('something'); | |
| Throw $this->shouldThrow('EndOfTheWorld')->duringGreet(); $this->shouldThrow('EndOfTheWorld')->during('greet'); $this->greet()->shouldThrow(new \Exception)->duringGreet(); $this->greet()->shouldThrow(new \Exception)->during('greet', ['arguments']); | |
| Type $this->greet()->shouldBeAnInstanceOf('Greeting'); $this->greet()->returnAnInstanceOf('Greeting'); $this->greet()->haveType('Greeting'); | |
| Object State 
 | |
| Inline class NeoSpec extends ObjectBehavior { function it_should_be_the_one() { $this->shouldBeTheOne(); } function getMatchers() { return [ 'beTheOne' => function($actual) { return $actual instanceOf TheOne; } ]; } } | 
Let & Let Go
| class SomeSpec extends ObjectBehavior { function let() { // run before every example } function it_greets_with_hello() { $this->greet()->shouldReturn('Hello, World!'); } function let_go() { // run after every example } } | 
Constructors
| //... function let() { $this->beConstructedWith('Hello, World!'); } | 
Stubbing
| class SomeSpec extends ObjectBehavior { function let(Greeting $greeting) { $this->beConstructedWith($greeting); } function it_greets_with_hello_world(Greeting $greeting) { $greeting->getMessage()->willReturn('Hello, World!'); $this->greet()->shouldReturn('Hello, World!'); } } | 
Mocking
| class SomeSpec extends ObjectBehavior { function let(Greeter $greeter) { $this->beConstructedWith($greeter); } function it_uses_a_greeter(Greeter $greeter) { $greeting->sayHelloWorld()->shouldBeCalled(); $this->greet(); } } | 
Notes
- Based on a gist from Pedro Borges
- Inspired by Marcello Duarte's PhpSpec 2.0 ilustrated by examples slides
- Converted by Jens Kohl