Testing Classes that Call an Argument Method in Constructor
<?php
namespace AKlump\PHPUnit\Test\EasyMock;
use AKlump\PHPUnit\EasyMockTrait;
use PHPUnit\Framework\TestCase;
Here is the Test
class ConstructorCallsArgumentMethodUnitTest extends TestCase {
  use EasyMockTrait;
  protected function getSchema() {
    return [
      'classToBeTested' => '\AKlump\PHPUnit\Test\EasyMock\Oscar',
      'classArgumentsMap' => [
        // We can manually create a mocked object with a pre-defined expectation
        // so that the constructor is able to call the expectation method, when
        // we use a callable like this:
        'pappa' => function () {
          $mock = \Mockery::mock('\AKlump\PHPUnit\Test\EasyMock\Pappa');
          $mock->allows('setDate');
          return $mock;
        },
      ],
    ];
  }
  public function testConstructor() {
    $this->assertConstructorSetsInternalProperties();
  }
}
Class Being Tested
class Oscar {
  private $pappa;
  public function __construct(Pappa $pappa) {
    $this->pappa = $pappa;
    $this->pappa->setDate(date_create());
  }
}
Class With a Method That Gets Called in Oscar::__construct
class Pappa {
  private $date;
  public function setDate(\DateTime $date) {
    $this->date = $date;
  }
}