Как использовать PHPOunitsOutputString PHPunits? - PullRequest
0 голосов
/ 04 мая 2020

это мой первый вопрос.

Я устанавливаю composer (1.10.5), fatfree-core (3.7) и phpunit (9.1.3) и от go до TDD.

Все работает, но если я использую $ this-> hopeOutputString (); У меня есть утверждения: 0 - не работает.

Я обнаружил, что это:

> $f3 = Base::instance();
> 
> $f3 -> mock ('GET /'); // <= it is problem

    <?php 
    [...]
    protected function setUp (): void
        {
            $this->f3 = Base::instance ();
            $this->f3 -> set ('QUIET',TRUE);
            $this->f3 -> config ('config.ini');
            $this->f3 -> mock ('GET /ftp');

            $this -> MainController = new MainController ($this->f3);
        }

        public function testExpectFooActualFoo ()
        {
            $this->expectOutputString ('foo');
            print'foo';
        }
    [...]

CMD:

 @php ./vendor/phpunit/phpunit/phpunit tests/MainControllerNoStaticTest.php
 PHPUnit 9.1.3 by Sebastian Bergmann and contributors.

 fooR
                        1 / 1 (100%)

 Time: 00:00.052, Memory: 4.00 MB

 There was 1 risky test:

 1) MainControllerNoStaticTest::testExpectFooActualFoo
 Test code or tested code did not (only) close its own output buffers

OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.

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

У вас есть идея, как сделать так, чтобы она была хорошей? - без изменения файлов без жира и phpunit? Я хочу использовать phpunit для тестирования, и я поставил среду программирования без жира.

1 Ответ

1 голос
/ 04 мая 2020

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

...