/**
* Testing spies
*/
public function testSpies()
{
$spy = ShortifyPunit::partialMock('SimpleClassForMocking');
$this->assertEquals($spy->first_method(), 1);
// default value
$this->assertEquals($spy->second_method(), 2);
// default value
$this->assertEquals($spy->third_method(), 3);
// default value
// after stubbing
ShortifyPunit::when($spy)->first_method()->returns('foo');
$this->assertEquals($spy->first_method(), 'foo');
// still default value
$this->assertEquals($spy->second_method(), 2);
// default value
$this->assertEquals($spy->third_method(), 3);
// default value
// test chain stubbing
ShortifyPunit::when($spy)->second_method()->third_method()->returns('bar');
$this->assertEquals($spy->second_method()->third_method(), 'bar');
// after chaning methods in chain with same arguments are instanceof `MockClassOnTheFly`
$this->assertInstanceOf('ShortifyPunit\\Mock\\MockClassOnTheFly', $spy->second_method());
}