public function testMultiLevelDemeterChain() { $this->mock->shouldReceive('levelOne->levelTwo->getFirst')->andReturn('first'); $this->mock->shouldReceive('levelOne->levelTwo->getSecond')->andReturn('second'); $this->assertEquals('second', $this->mock->levelOne()->levelTwo()->getSecond()); $this->assertEquals('first', $this->mock->levelOne()->levelTwo()->getFirst()); }