Если я прокомментирую один из тестов ниже тестовых проходов. Тем не менее, работает как вместе, последний не сможет (даже если я изменить порядок испытаний):Испытательный проход только тогда, когда есть один метод испытаний
код Производство:
<?php
class View
{
private $filename;
private $data;
public function __construct($filename)
{
$this->filename = $filename;
$this->data = [];
}
public function __set($key, $value)
{
$this->data[$key] = $value;
}
public function render()
{
extract($this->data);
ob_start();
require_once $this->filename;
return ob_get_clean();
}
public function __toString()
{
return $this->render();
}
}
Тест класс:
require_once 'vendor/autoload.php';
use org\bovigo\vfs\vfsStream;
use org\bovigo\vfs\vfsStreamWrapper;
/**
* @outputBuffering enabled
*/
class ViewTest extends PHPUnit_Framework_TestCase
{
public function setUp()
{
vfsStream::setup();
}
/**
* @outputBuffering enabled
*/
public function testRenderSimpleView()
{
$fileContent = 'index file';
vfsStreamWrapper::getRoot()->addChild(
vfsStream::newFile('index.php')->withContent($fileContent)
);
$view = new View(vfsStream::url('index.php'));
echo $view->render();
$this->expectOutputString($fileContent);
}
/**
* @outputBuffering enabled
*/
public function testRenderViewWithData()
{
$filename = 'index.php';
$fileContent = '<?php echo $a; ?>';
vfsStreamWrapper::getRoot()->addChild(
vfsStream::newFile($filename)->withContent($fileContent)
);
$view = new View(vfsStream::url($filename));
$view->a = 1;
echo $view;
$this->expectOutputString('1');
}
}
тест выхода:
PHPUnit 3.7.10 by Sebastian Bergmann.
.F
Time: 0 seconds, Memory: 3.75Mb
There was 1 failure:
1) ViewTest::testRenderViewWithData
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'1'
+''
FAILURES!
Tests: 2, Assertions: 2, Failures: 1.
Это не имеет никакого смысла для меня. Что мне не хватает?
Такое поведение, как правило, из-за проблем с тестовой изоляции. Что-то из Test1 не очищается, вызывая другое поведение, когда Test2 работает после него. Используете ли вы общие/глобальные переменные или синглтоны? Не помогает ли ошибка теста/ошибка/исключение? – Gishu
Нет, я не использую однотонные или глобальные данные. Выходная буферизация влияет на поведение вывода PHP ... –
Имеются ли данные об ошибке тестирования, что-либо? – Gishu