/**
  * Test if objects are being passed the service locator
  */
 function testServiceLocatorAwareMustBeGivenServiceLocator()
 {
     $this->request->setPost(new Parameters(array('extAction' => 'KJSenchaTestAsset.Direct.ServiceAction', 'extMethod' => 'getServiceResult', 'extTID' => 0, 'extModule' => null)));
     $this->controller->setDebugMode(true);
     $result = $this->controller->dispatch($this->request);
     $this->assertEquals('pong!', $result->result);
 }
 /**
  * @covers \KJSencha\Controller\DirectController::setDebugMode
  * @covers \KJSencha\Controller\DirectController::isDebugMode
  */
 function testShowErrorResponseWhenDebugModeIsOn()
 {
     $this->request->setPost(new Parameters(array('extAction' => 'KJSenchaTestAsset.Direct.ErrorGenerator', 'extMethod' => 'throwException', 'extTID' => 0, 'extModule' => null)));
     $this->controller->setDebugMode(true);
     $result = $this->controller->dispatch($this->request);
     $this->assertEquals('exception', $result->type);
     $this->assertEquals('Exception!', $result->message);
     $this->assertNotEmpty($result->where);
 }
<?php

namespace KJSencha;

use Zend\ServiceManager\AbstractPluginManager;
return array('factories' => array('kjsencha_direct' => function (AbstractPluginManager $pluginManager) {
    $sl = $pluginManager->getServiceLocator();
    $config = $sl->get('Config');
    /* @var $manager \KJSencha\Direct\DirectManager */
    $manager = $sl->get('kjsencha.direct.manager');
    /* @var $apiFactory \KJSencha\Direct\Remoting\Api\Api */
    $apiFactory = $sl->get('kjsencha.api');
    $controller = new Controller\DirectController($manager, $apiFactory);
    $controller->setDebugMode($config['kjsencha']['debug_mode']);
    return $controller;
}, 'kjsencha_data' => function (AbstractPluginManager $pluginManager) {
    $sl = $pluginManager->getServiceLocator();
    /* @var $componentManager \KJSencha\Service\ComponentManager */
    $componentManager = $sl->get('kjsencha.componentmanager');
    return new Controller\DataController($componentManager);
}));