/** * @covers DataSift\Storyplayer\CommandLib\SshClient::runCommand * @covers DataSift\Storyplayer\CommandLib\E4xx_NeedIpAddress::__construct */ public function testMustProvideIpAddressToRunCommands() { // ---------------------------------------------------------------- // setup your test // our mocked $st $st = Mockery::mock("DataSift\\Storyplayer\\PlayerLib\\StoryTeller"); // our fake Output for logging purposes $output = Mockery::mock("DataSift\\Storyplayer\\Output"); $output->shouldReceive('logPhaseActivity'); // our fake injectables container $injectables = new Injectables(); $injectables->dataFormatter = new DataFormatter(); $injectables->dataFormatter->setIsVerbose(true); $injectables->output = $output; // our mocked $st needs to do things too // // we have to put this down here, because we need to pass $st into // our mocked CommandRunner $st->shouldReceive('startAction')->once()->andReturn(new Action_LogItem($injectables, 1)); // our test subject $obj = new SshClient($st); $obj->setSshUsername('fred'); // ---------------------------------------------------------------- // perform the change $caughtException = false; try { $result = $obj->runCommand('ls /tmp'); } catch (E4xx_NeedIpAddress $e) { $caughtException = true; } // ---------------------------------------------------------------- // test the results $this->assertTrue($caughtException); // all done Mockery::close(); }