getMock('PHPCensor\\Model\\Project'); $projectStoreMock = $this->getMockBuilder('PHPCensor\\Store\\ProjectStore') ->getMock(); $projectStoreMock->method('getById') ->will($this->returnValueMap([ [1, 'read', $projectMock], [2, 'read', null], ])); $buildServiceMock = $this->getMockBuilder('PHPCensor\\Service\\BuildService') ->disableOriginalConstructor() ->getMock(); $buildServiceMock->method('createBuild') ->withConsecutive( [$projectMock, null, null, null, null, null], [$projectMock, '92c8c6e', null, null, null, null], [$projectMock, null, 'master', null, null, null] ); $this->command = $this->getMockBuilder('PHPCensor\\Command\\CreateBuildCommand') ->setConstructorArgs([$projectStoreMock, $buildServiceMock]) ->setMethods(['reloadConfig']) ->getMock(); $this->application = new Application(); } protected function getCommandTester() { $this->application->add($this->command); $command = $this->application->find('php-censor:create-build'); $commandTester = new CommandTester($command); return $commandTester; } public function testExecute() { $commandTester = $this->getCommandTester(); $commandTester->execute(['projectId' => 1]); $commandTester->execute(['projectId' => 1, '--commit' => '92c8c6e']); $commandTester->execute(['projectId' => 1, '--branch' => 'master']); } /** * @expectedException \InvalidArgumentException */ public function testExecuteWithUnknownProjectId() { $commandTester = $this->getCommandTester(); $commandTester->execute(['projectId' => 2]); } }