/** * @test */ public function getCachedItemSetsCacheWhenNoneExists() { $storage = $this->mockWithPhpUnit(); $storage->expects($this->at(0))->method('hasItem')->with('foo')->will($this->returnValue(false)); $storage->expects($this->at(1))->method('hasItem')->with($this->delayedKey)->will($this->returnValue(false)); $storage->expects($this->at(2))->method('setItem')->with($this->delayedKey, 'under_construction'); $storage->expects($this->at(3))->method('setItem')->with('foo', 'bar'); $storage->expects($this->once())->method('removeItem')->with($this->delayedKey); $storage->expects($this->once())->method('getItem')->with('foo')->will($this->returnValue('bar')); $return = $this->cache->getCachedItem('foo', function () { return 'bar'; }); $this->assertEquals('bar', $return); }