Я пытаюсь запустить тесты с использованием кода и его библиотеки для 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() и, очевидно, подниму ошибку, как только этот класс не имеет подходящей среды для запустить.
Будет ли это то, что я думаю о заглушках неправильно?
спасибо.