public function testCreateDriver() { /** @var m\MockInterface $driver_factory */ $driver_factory = $this->driverFactoryRegistry->get('selenium2'); $driver_factory->shouldReceive('createDriver')->with($this->browser)->once()->andReturn('OK'); $this->assertEquals('OK', $this->browser->createDriver()); }
/** * Instantiate the container. * * Objects and parameters can be passed as argument to the constructor. * * @param array $values The parameters or objects. */ public function __construct(array $values = array()) { parent::__construct($values); $this['event_dispatcher'] = function () { return new EventDispatcher(); }; $this['session_factory'] = function () { return new SessionFactory(); }; $this['session_strategy_factory'] = function ($c) { $session_strategy_factory = new SessionStrategyFactory(); $session_strategy_factory->setApplication($c['application']); return $session_strategy_factory; }; $this['session_strategy_manager'] = function ($c) { return new SessionStrategyManager($c['session_strategy_factory']); }; $this['isolated_session_strategy'] = $this->factory(function ($c) { $session_strategy = new IsolatedSessionStrategy($c['session_factory']); $session_strategy->setEventDispatcher($c['event_dispatcher']); return $session_strategy; }); $this['shared_session_strategy'] = $this->factory(function ($c) { $session_strategy = new SharedSessionStrategy($c['isolated_session_strategy']); $session_strategy->setEventDispatcher($c['event_dispatcher']); return $session_strategy; }); $this['remote_url'] = function () { return new RemoteUrl(); }; $this['remote_coverage_helper'] = function ($c) { return new RemoteCoverageHelper($c['remote_url']); }; $this['test_suite_factory'] = function ($c) { $test_suite_factory = new TestSuiteFactory($c['session_strategy_manager'], $c['browser_configuration_factory'], $c['remote_coverage_helper']); $test_suite_factory->setApplication($c['application']); return $test_suite_factory; }; $this['regular_test_suite'] = $this->factory(function ($c) { $test_suite = new RegularTestSuite(); $test_suite->setEventDispatcher($c['event_dispatcher']); return $test_suite; }); $this['browser_test_suite'] = $this->factory(function ($c) { $test_suite = new BrowserTestSuite(); $test_suite->setEventDispatcher($c['event_dispatcher']); return $test_suite; }); $this['driver_factory_registry'] = function () { $registry = new DriverFactoryRegistry(); $registry->add(new Selenium2DriverFactory()); $registry->add(new SahiDriverFactory()); $registry->add(new GoutteDriverFactory()); $registry->add(new ZombieDriverFactory()); return $registry; }; $this['browser_configuration_factory'] = function ($c) { $browser_configuration_factory = new BrowserConfigurationFactory(); $browser_configuration_factory->register(new BrowserConfiguration($c['event_dispatcher'], $c['driver_factory_registry'])); $browser_configuration_factory->register(new SauceLabsBrowserConfiguration($c['event_dispatcher'], $c['driver_factory_registry'])); $browser_configuration_factory->register(new BrowserStackBrowserConfiguration($c['event_dispatcher'], $c['driver_factory_registry'])); return $browser_configuration_factory; }; }
/** * Creates driver based on browser configuration. * * @return DriverInterface */ public function createDriver() { $factory = $this->_driverFactoryRegistry->get($this->getDriver()); return $factory->createDriver($this); }
/** * @expectedException \OutOfBoundsException * @expectedExceptionMessage No driver factory for "test" driver. */ public function testGettingNonExisting() { $this->_driverFactoryRegistry->get('test'); }