Я пытаюсь запустить несколько тестов, используя общий поставщик данных в PHPUnit.
См. тест ниже:
namespace AppBundle\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use AppBundle\Tests\DataProvider\XmlDataProvider;
class DefaultControllerTest extends WebTestCase
{
/**
* @dataProvider XmlDataProvider::xmlProvider
* @covers ReceiveController::receiveAction()
* @param string
*/
public function testReceive($xml)
{
$client = static::createClient([], ['HTTP_HOST' => 'mt.host']);
$client->request(
'POST',
'/receive',
[],
[],
[],
$xml
);
$response = $client->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
}
Теперь мне нужен класс внешнего поставщика данных:
namespace AppBundle\Tests\DataProvider;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class XmlDataProvider extends WebTestCase
{
/**
* @dataProvider
*/
public static function xmlProvider()
{
return array([
'xml1' => ''
]);
}
}
Но когда я запускаю phpunit, я получаю:
1) Предупреждение Данные Поставщик, указанный для
AppBundle\Tests\Controller\DefaultControllerTest::testReceive,
недействителен. Класс XmlDataProvider не существует
2) Предупреждение В классе
"AppBundle\Tests\DataProvider\XmlDataProvider" не найдено тестов.
Как это сделать?
ОБНОВЛЕНИЕ
Фрагмент автозагрузки composer.json для справки:
"autoload": {
"psr-4": {
"AppBundle\\": "src/AppBundle",
"Tests\\": "tests"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
},
"files": [
"vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
]
},
Подробнее здесь: https://stackoverflow.com/questions/458 ... in-phpunit