2015-10-12 3 views
0

Вот мое обслуживание, которое я хотел бы проверить:Как мне высмеять InlineScript?

class AffairesJSService { 
    private $inlineScript; 
    private $url; 
    private $sBasepath; 

    public function __construct($inlineScript, $url, $sBasepath) 
    { 
     $this->inlineScript = $inlineScript; 
     $this->url   = $url; 
     $this->sBasepath = $sBasepath; 
    } 

    public function inject($aParams) 
    { 
     $url = $this->url; 
     $containerRoutes = new Container('IntraRouteListAffaires'); 

     $sEtatAffaire = $containerRoutes->sEtatAffaire !== null ? $containerRoutes->sEtatAffaire : 'EN_COURS'; 
     $iIdPrestation = $containerRoutes->iIdPrestation !== null ? $containerRoutes->iIdPrestation : 0; 
     $iIdCentreProfit = $containerRoutes->iIdCentreProfit !== null ? $containerRoutes->iIdCentreProfit : 0; 

     $this->inlineScript->appendFile($this->sBasepath . $aParams["myfile"]); 

     $sUrlListContrats = $url('module/action', ['idaffaire' => $aParams['idaffaire']]); 

     $this->inlineScript->captureStart(); 
      echo <<<JS 
      loadPanelContrats('$sUrlListContrats'); JS; 
      $this->inlineScript->captureEnd(); 
    } } 

Ну, это мой тест, но я не знаю, как издеваться InlineScripts и объявить appendFile:

class AffairesJSServiceTest extends TestCase 
{ 
    /** 
    * @var MyService 
    */ 
    private $myService; 

    public function setUp() 
    { 
     $mockUrl = $this->getMock('Zend\View\Helper\Url\Url', array(), array(), '', false); 

     $inlineScript = $this->getMock('Zend\View\Helper\InlineScript\InlineScript', array(), array(), '', false); 

     $sBasepath = "/my/path"; 

     $this->myService = new AffairesJSService(
      $inlineScript, 
      $mockUrl, 
      $sBasepath, 
     ); 
    } 

    public function testInject() 
    { 
     $aParams = array(); 
     //$aParams["myfile"] = 'myfile'; 
     $this->myService->inject($aParams); 
    } 

Могли бы вы, пожалуйста, Помогите ? Самый проблемный вопрос - как издеваться над определенными методами zf2. Благодарю.

+0

В чем проблема? Ваш код выглядит хорошо для меня – Alfwed

+0

Неустранимая ошибка: вызов функции-члена appendFile() для не-объекта – Amelie

+0

Я думаю, что я должен добавить этот метод и возвращаемое значение в мой макет – Amelie

ответ

1

Используя свободный синтаксис, вы можете сделать следующее. Все методы издеваться не будут делать ничего и возвращать нуль:

$inlineScript = $this->getMockBuilder('Zend\View\Helper\InlineScript\InlineScript') 
    ->disableOriginalConstructor() 
    ->getMock(); 

Если вы хотите, чтобы высмеивать конкретные методы, вы можете задать его с помощью метода setMethods():

$inlineScript = $this->getMockBuilder('Zend\View\Helper\InlineScript\InlineScript') 
    ->setMethods(['appendFile']) 
    ->disableOriginalConstructor() 
    ->getMock(); 
+0

Ну, это должно ... – Alfwed

+0

Спасибо, но это говорит мне, что $ this-> inlineScript не является объектом ...:/ – Amelie

+0

Вы пытались выполнить var_dump то, что передается вашему объекту? Если у вас есть 'var_dump ($ this-> inlineScript)' в вашем конструкторе классов, что вы видите? – Alfwed

Смежные вопросы