을 autowiring에를, 나는 다음과 같은 오류를 얻을 :클래스를 찾을 수 없습니다 WebTestCase : <code>php bin/console debug:autowiring</code>를 검토
In FileLoader.php line 168:
Class Symfony\Bundle\FrameworkBundle\Test\WebTestCase not found in /vagrant/mysymfony/app/config/services.yml (whic
h is being imported from "/vagrant/mysymfony/app/config/config.yml").
In WebTestCase.php line 17:
Class Symfony\Bundle\FrameworkBundle\Test\WebTestCase not found
In WebTestCase.php line 21:
Class Symfony\Bundle\FrameworkBundle\Test\KernelTestCase not found
In KernelTestCase.php line 24:
Class PHPUnit\Framework\TestCase not found
오류는 다음 파일로 인해 :
<?php
/**
* This file is part of the RestExtraBundle package [1].
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this[1] source code.
*
* @license MIT License
* [1] https://github.com/willdurand/BazingaRestExtraBundle
*/
namespace AppBundle\Test;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase as BaseWebTestCase;
/**
* @author William Durand <[email protected]>
*/
abstract class WebTestCase extends BaseWebTestCase
{
protected function assertJsonResponse($response, $statusCode = 200)
{
$this->assertEquals(
$statusCode, $response->getStatusCode(),
$response->getContent()
);
$this->assertTrue(
$response->headers->contains('Content-Type', 'application/json'),
$response->headers
);
}
protected function jsonRequest($verb, $endpoint, array $data = array())
{
$data = empty($data) ? null : json_encode($data);
return $this->client->request($verb, $endpoint,
array(),
array(),
array(
'HTTP_ACCEPT' => 'application/json',
'CONTENT_TYPE' => 'application/json'
),
$data
);
}
}
파일이에 다음 디렉토리 구조 :
.
├── AppBundle.php
├── Controller
│ ├── DefaultController.php
│ └── FooController.php
└── Test
└── WebTestCase.php
그리고 그 WebTestCase
클래스가 사용됩니다.
<?php
namespace Tests\AppBundle\Controller;
use AppBundle\Test\WebTestCase;
class FooControllerTest extends WebTestCase
{
public function testFooAction()
{
$client = static::createClient();
$crawler = $client->request('GET', '/foo');
$this->assertEquals(200, $client->getResponse()->getStatusCode());
$this->assertJsonResponse($client->getResponse());
}
}
tests
디렉토리 안에 다음 경로에 있습니다 :
.
└── AppBundle
└── Controller
├── DefaultControllerTest.php
└── FooControllerTest.php
시험은 문제의 어떤 종류없이 실행, 내가 실제로 우연히이 오류를 발견 한 다음 파일이다. 테스트에서 파일 및 그 파일에 대한 참조를 제거하면 아무런 번거 로움없이 debug:autowiring
을 확인할 수 있습니다. 그러나 나는 내가 여기에서 놓치고있는 것을 알아낼 수 없다. 나는 그것이 파일 배치 또는 무언가와 관련이 있다고 생각하지만, 나는 정말로 모른다. 나 좀 도와 줄 수있어?
또한 명령을 검사하지 않으면 이러한 오류를 발견하지 못했을 것입니다. 앞으로 이런 종류의 에러를 발생시키는 저장소에 코드를 위탁하는 것을 피하기 위해 Symfony는 이러한 오류를 어딘가에 기록합니까? 또는 모든 debug
명령을 수동으로 확인해야합니까?
도움을 주셔서 감사합니다. vagrant/mysymfony/app/config/services.yml
# Learn more about services, parameters and containers at
# https://symfony.com/doc/current/service_container.html
parameters:
#parameter_name: value
services:
# default configuration for services in *this* file
_defaults:
# automatically injects dependencies in your services
autowire: true
# automatically registers your services as commands, event subscribers, etc.
autoconfigure: true
# this means you cannot fetch services directly from the container via $container->get()
# if you need to do this, you can override this setting on individual services
public: false
# makes classes in src/AppBundle available to be used as services
# this creates a service per class whose id is the fully-qualified class name
AppBundle\:
resource: '../../src/AppBundle/*'
# you can exclude directories or files
# but if a service is unused, it's removed anyway
exclude: '../../src/AppBundle/{Entity,Repository,Tests}'
# controllers are imported separately to make sure they're public
# and have a tag that allows actions to type-hint services
AppBundle\Controller\:
resource: '../../src/AppBundle/Controller'
public: true
tags: ['controller.service_arguments']
# add more services, or override services that need manual wiring
# AppBundle\Service\ExampleService:
# arguments:
# $someArgument: 'some_value'
이 파일의 내용을 무엇입니까 :'/ 방랑/mysymfony/응용 프로그램/설정/services.yml'가
services.yml
이 경우 다른 사람이 이와 같이 보일 것 같은 문제에 직면? –@NikitaLeshchev 방금 주 질문을 편집했습니다. – MikelAlejoBR
음 ... 나는 어떤 오류도 보지 못했다. 'composer dump-autoload'를 실행하십시오. LMK가 도움이된다면. –