Включение теста в PHPUnit - PullRequest
       83

Включение теста в PHPUnit

1 голос
/ 02 августа 2020

Я начал использовать PHPUnit, и в моем первом тесте я не понимаю, почему я должен использовать require "app/Slug.php"; вместо require "../app/Slug.php";

введите описание изображения здесь

и это тестовый код:

<?php

    use PHPUnit\Framework\TestCase;

    class SlugTest extends TestCase{

        public function test_render(){
            require "app/Slug.php";

            $slug = new Slug("My First Test");

            $this->assertEquals($slug->render(), "my-first-test");
        }
    }

Я подумал, что могу использовать require "../app/Slug.php";, чтобы заставить его работать. Я даже тестировал маршрут в консоли, но код работает только с require "app/Slug.php";

Кто-нибудь знает почему?

Ответы [ 2 ]

1 голос
/ 02 августа 2020

Да. Требуется, чтобы app / Slag. php загружал в него класс или код и обращался к нему из тестового файла. но вы можете использовать composer для автозагрузки ваших классов через psr-4 или файлы

0 голосов
/ 02 августа 2020

Это правильное поведение, потому что вы запускаете тесты из каталога проекта root. Итак, текущий рабочий каталог - это папка проекта root. require попытается включить относительные пути, используя текущий каталог в качестве базового пути.

Если вы используете require "../app/Slug.php";, вы должны запустить phpunit из папки tests.

Вот так :

# that way it will work with "../app/Slug.php"
cd tests
./../vendor/bin/phpunit SlugTest.php --color

Итак, базовый путь - это не то место, где лежит файл, а то, откуда вы его запускаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...