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

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

Мне удалось настроить среду тестирования, и
1. Создан файл модульного теста (php codecept.phar generate: test unit ExampleTest)
2. Запустите тестовую команду (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 \ поставщика \ Bin \ тесты \ блок

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);
}

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

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]