CakePHP 3.6.10
Плагин, сгенерированный с помощью команды bake.
Я выполняю простой модульный тест на моем контроллере промежуточного программного обеспечения PSR-7 с использованием CakePHP Test Suite IntegrationTestCase.
Я бы следовал приведенной здесь инструкции https://book.cakephp.org/3.0/en/development/testing.html, в которой говорится, что для useHttpServer установлено значение true в функции setUp,
$this->useHttpServer(true);
, но в итоге возникает ошибка
PHPUnit 6.5.12 by Sebastian Bergmann and contributors.
EIIII 5 / 5 (100%)
Time: 1.24 seconds, Memory: 8.00MB
There was 1 error:
1) TripfezApi\Test\TestCase\Controller\ToursControllerTest::testIndex
TypeError: Argument 1 passed to Cake\Controller\Controller::__construct() must be an instance of Cake\Http\ServerRequest, string given
/var/www/html/tripfez-tours/plugins/TripfezApi/vendor/cakephp/cakephp/src/Controller/Controller.php:241
/var/www/html/tripfez-tours/plugins/TripfezApi/vendor/cakephp/cakephp/src/TestSuite/MiddlewareDispatcher.php:80
/var/www/html/tripfez-tours/plugins/TripfezApi/vendor/cakephp/cakephp/src/TestSuite/IntegrationTestCase.php:521
/var/www/html/tripfez-tours/plugins/TripfezApi/vendor/cakephp/cakephp/src/TestSuite/IntegrationTestCase.php:490
/var/www/html/tripfez-tours/plugins/TripfezApi/vendor/cakephp/cakephp/src/TestSuite/IntegrationTestCase.php:375
/var/www/html/tripfez-tours/plugins/TripfezApi/tests/TestCase/Controller/ToursControllerTest.php:42
/home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:195
/home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:148
ERRORS!
Tests: 5, Assertions: 0, Errors: 1, Incomplete: 4.
это класс ошибок в IntegrationTestCase или он действительно не работает таким образом?
Ниже приведен мой полный код
<?php
namespace TripfezApi\Test\TestCase\Controller;
use Cake\TestSuite\IntegrationTestCase;
use TripfezApi\Controller\ToursController;
use Cake\Http\ServerRequest;
use Cake\Http\Response;
use Cake\Controller\Controller;
use Cake\Event\Event;
use GuzzleHttp;
/**
* TripfezApi\Controller\ToursController Test Case
*/
class ToursControllerTest extends IntegrationTestCase
{
private $controller;
private $http;
/**
* Fixtures
*
* @var array
*/
public $fixtures = [
'plugin.tripfez_api.tours'
];
public function setUp()
{
parent::setUp();
$this->configApplication('TripfezApi\Controller\ToursController', [CONFIG]);
$this->useHttpServer(true);
}
public function testBasicAuthentication()
{
$this->configRequest([
'environment' => [
'PHP_AUTH_USER' => 'username',
'PHP_AUTH_PW' => 'password',
]
]);
$this->get('/api/posts');
$this->assertResponseOk();
}
public function tearDown(){
$this->useHttpServer(false);
}
}