/** * Set up class mocker * * @return void */ public function setUp() { BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_RETURN_NULL); $this->classMocker = new ClassMocker(); //$this->classMocker->setGenerationDir('./var/generation'); $this->classMocker->mock('Foobar\\*'); $this->classMocker->registerTrait(TraitA::class); $this->classMocker->registerTrait(TraitB::class); $this->classMocker->registerTrait(TraitC::class); $this->classMocker->registerTrait(DummyTrait::class, 'Foobar\\*', 1000); // test footprints $footprintA = new ClassFootprint(); $footprintA->addInterface(Readable::class); $footprintA->addInterface(Talkable::class); $footprintB = new ClassFootprint(); $footprintB->setParent('Foobar\\BaseClass'); $this->classMocker->registerFootprint('Foobar\\BaseClass', $footprintA); $this->classMocker->registerFootprint('Foobar\\TestClass', $footprintB); $this->classMocker->enable(); }
/** * Set up * * @return void */ public function setUp() { BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_RETURN_NULL); }
/** * Test different default behaviors * * @return void * @test */ public function testDefaultMethodCallBehavior() { $dummy = new DummyClass(); $dummy->foobar = 10; // return null for none defined methods BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_RETURN_NULL); $this->assertNull($dummy->someMethod(10)); $this->assertSame('', $dummy->__toString()); // return self for none defined methods BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_RETURN_SELF); $this->assertSame($dummy, $dummy->someMethod(10)); $this->assertSame('', $dummy->__toString()); // call handle for none defined methods BaseMock::setDefaultCallBehavior(function ($a) { return $this->foobar + $a; }); $this->assertEquals(20, $dummy->someMethod(10)); // throw exception for none defined methods BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_THROW_EXCEPTION); try { $dummy->someMethod(10); $this->fail("Should throw error on invalid method call"); } catch (\BadMethodCallException $e) { $this->assertEquals('Method JSiefer\\ClassMocker\\TestClasses\\DummyClass::someMethod() does not exist', $e->getMessage()); } try { BaseMock::setDefaultCallBehavior('Something Invalid'); $this->fail("Should throw error on invalid behavior option"); } catch (\InvalidArgumentException $e) { $this->assertEquals('Invalid behavior option (Something Invalid)', $e->getMessage()); } BaseMock::setDefaultCallBehavior(BaseMock::DEFAULT_BEHAVIOUR_RETURN_NULL); }