Ошибка “Fatal error: Class '…' not found” в phpUnit

454
10 декабря 2016, 10:51

тестируемый класс, лежит в app\web:

<?php declare(strict_types = 1);
namespace app\web;
class Application
{
    private $config = [];
    public function __construct(array $config = null)
    {
        if ($config !== null) {
            $this->checkConfig($config);
            $this->config = $config;
        }
    }
    public function configure(array $config)
    {
        $this->checkConfig($config);
        $this->config = $config;
    }
    public function checkConfigure()
    {
        return !empty($this->config);
    }
    public function run()
    {
        if (empty($this->config)) {
            return false;
        } else {
            return true;
        }
    }
    public function notFound()
    {
        throw new \InvalidArgumentException();
    }
    public function sayHello()
    {
        echo 'Hello World!';
    }
    private function checkConfig($config)
    {
        if (!is_array($config)) {
            throw new \Exception("Config must be an array!");
        }
    }
}

Класс с тестами в tests\web:

<?php
namespace tests\web;
use app\web\Application;
class ApplicationTest extends \PHPUnit_Framework_TestCase
{
    public function testRunApplication(){
        $app = new Application(['param'=>'value']);
        $this->assertTrue($app->run());
        $wrongApp = new Application([]);
        $this->assertFalse($wrongApp->run());
        $this->assertEquals(true, $app->run());
        $this->markTestIncomplete('Incomplete');
    }
}

Собственно проблема в том, что при запуске phpunit возникает ошибка:

Fatal error: Class 'app\web\Application' not found in C:\wamp64\www\unit_test_learning\tests\web\ApplicationTest.php on line 11

Не нашел в сети решение. Подскажите пожалуйста, что я делаю не так.

*использовал composer, если это важно

Answer 1

Мне помогли в другом сервисе. Ошибка была в загрузчике. Исправил на:

 "autoload": {
        "psr-4": {
          "app\\web\\": "app/web/" ,
          "\\":""
        }
      }

Перелопатил кучу статей и документацию, но так и не понял, как формировать автозагрузчик в composer.

Буду очень признателен, если кто-то поможет это понять.

READ ALSO
Добавление записи в БД через форму [закрыто]

Добавление записи в БД через форму [закрыто]

Вношу данные в БД через форму в отдельном файле и методом POST отправляю ихНо почему-то данные в бд не появляются,что неправильно делаю? Помогите...

358
ajax передача файла в php

ajax передача файла в php

Как передать файл из input type=file при помощи ajax или post методом POST файл в файл phpне могу толкового ничего найти и сделать

353
Проверка данных не правильно работает

Проверка данных не правильно работает

Помогите разобраться Использую вот такой простейший код:

258
Помогите разобраться со скриптом ajax

Помогите разобраться со скриптом ajax

Не понимаю почему не срабатывает скрипт:

315