2015-08-31 2 views
0

Я пытаюсь запустить тесты с использованием кода и его библиотеки для Mock и Stub. , что происходит, когда я пытаюсь запустить мой тест с помощью своих Stubs, это вызывает ошибку, которая реализована в моих реальных классах.Stubed object вызывает реальные методы в кодировании

Я думаю, что Stub - это способ изолировать тест и подражать реальным объектам. Почему он зовет мои настоящие методы?

<?php 

class FirstDegreeTest extends \Codeception\TestCase\Test 
{ 
    /** 
    * @var \UnitTester 
    */ 
    protected $tester; 

    protected function _before() 
    { 
    $this->max_threads = 30; 
    $this->firstDegree = new AlThread\LoadControl\Measurer\FirstDegree($this->max_threads); 

    $sensor = Stub::make("AlThread\LoadControl\Sensor\LoadAvg", array("getSystemLoad", Stub::consecutive(0, 1, -3, 1.1, null))); 

    $this->firstDegree->setSensor($sensor); 
    } 

    public function testMeasure() 
    {  
    $this->assertEquals(30, $this->firstDegree->measure()); 
    } 
} 
?> 

Так что, когда я бегу codeception (PHP codeception.phar запуска):

Time: 487 ms, Memory: 11.25Mb 

There was 1 error: 

--------- 
1) Test me (FirstDegreeTest::testMeasure) 

    [PHPUnit_Framework_Exception] rewind() expects parameter 1 to be resource, null given 
                           #1 Codeception\Subscriber\ErrorHandler->errorHandler 
#2 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:42 
#3 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:55 
#4 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:49 
#5 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:61 
#6 /home/AlThread/src/LoadControl/Sensor/LoadAVG.php:67 
#7 /home/AlThread/src/LoadControl/Sensor/LoadSensor.php:10 
#8 /home/AlThread/src/LoadControl/Measurer/LoadMeasurer.php:32 
#9 /home/AlThread/tests/unit/FirstDegreeTest.php:31 
#10 FirstDegreeTest->testMeasure 

FAILURES! 
Tests: 3, Assertions: 2, Errors: 1. 

Так вот проблема:

[PHPUnit_Framework_Exception] rewind() expects parameter 1 to be resource, null given 

отслеживающий не принимают меня до реального осуществления класс LoadAVG, где я действительно вызываю функцию rewind() и, очевидно, подниму ошибку, как только этот класс не имеет подходящей среды для запустить.

Будет ли это то, что я думаю о заглушках неправильно?

спасибо.

ответ

0

Вы неправильно Params для Окурка :: сделать, он должен быть ассоциативным массивом

$sensor = Stub::make("AlThread\LoadControl\Sensor\LoadAvg", array("getSystemLoad"=>Stub::consecutive(0, 1, -3, 1.1, null))); 
Смежные вопросы