Кодовый тестовый модуль

Я новичок в PHP и Codeception и в целом концепции модульного тестирования. До сих пор я следовал краткому руководству Codeception ( http://codeception.com/quickstart) и читал их документацию ( http://codeception.com/docs/05-UnitTests).

Мне удалось настроить среду тестирования, и 1. Создать файл модульного теста (php codecept.phar generate:test unit ExampleTest) 2. Выполнить команду test (php codecept.phar run unit ExampleTest), которая возвращает ошибку: Была 1 ошибка:

1) [35;1mExampleTest:[39;22m Validation
[37;41;1m Test [39;49;22m tests\unit\ExampleTest.php:testValidation
[37;41;1m                                  [39;49;22m
[37;41;1m  [Error] Class 'User' not found  [39;49;22m
[37;41;1m                                  [39;49;22m
#1  ExampleTest->testValidation
#2  C:\laragon\www\kario\vendor\bin\codecept.phar:5

Что я не понимаю, так как тестовый файл узнает, на каком php-файле выполняется тест?

Мой проект Laragon называется kario и находится в C:\laragon\www\kario\resources\views\pages\orders

пока файл тестового модуля находится в C:\laragon\www\kario\vendor\bin\tests\unit

1 ответ

У меня тоже был этот вопрос, и я нашел ответ для себя. Размещено здесь http://phptest.club/t/beginner-codeception-unit-test-help/1849 но также, здесь вы идете:

Сначала несколько деталей. Я использую Codeception v2.4.1, работающий на PHPUnit 7.1.4. Ответ:

в codeception.yml добавьте эти две строки:

settings:
    bootstrap: _bootstrap.php

Здесь _bootstrap.php может быть любым, каким вы хотите, чтобы имя вашего файла начальной загрузки было.

Вы должны поместить _bootstrap.php в каждый из следующих каталогов следующим образом:

tests/unit/_bootstrap.php
tests/functional/_bootstrap.pp
tests/acceptance/_bootstrap.php

В моем файле tests / unit / _bootstrap.php я поместил следующий код:

<?php
use Codeception\Util\Autoload;
Autoload::addNamespace('myclassnamespace', __DIR__ . '/../../Classes/');

Чтобы убедиться, что у меня был правильный путь к классам, я использовал trigger_error(DIR) в своем _bootstrap.php, прежде чем добавить строку автозагрузки.

Затем в моем файле tests / unit / TestAddCest.php я поместил следующую строку в начало файла:

<?php
use mynamespace;

И в моем тесте функция выглядит следующим образом (обратите внимание на создание экземпляра класса User):

public function tryToTest(UnitTester $I)
{
  $user = new mynamespace\User('someusername');
  $I->assertEquals('someusername', $user->username);
}

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

Изменить 01/01/2018: кто-то ответил мне на http://phptest.club/:

Было бы лучше настроить автозагрузку ваших классов в composer.json и позволить composer делать все остальное, если только вы не попытаетесь избежать использования composer.

https://getcomposer.org/doc/01-basic-usage.md#autoloading

Другие вопросы по тегам