класс phpspec не найден в it_is_initializable

#symfony #testing #phpspec

#symfony #тестирование #phpspec

Вопрос:

Я занимаюсь рефакторингом приложения symfony2 с помощью phpspec. Но когда я пытаюсь его протестировать, я продолжаю получать ту же ошибку на первом шаге.

 bin/phpspec run -v
Test/Bundle/TestBundle/Service/TestService
36  ! it is initializable
  class TestRepository not found.

   0 vendor/phpspec/prophecy/src/Prophecy/Doubler/LazyDouble.php:58
     throw new ProphecyExceptionDoublerClassNotFoundException("Class TestRepository"...)
   1 vendor/phpspec/prophecy/src/Prophecy/Prophecy/ObjectProphecy.php:63
     ProphecyDoublerLazyDouble->setParentClass("TestRepository")
 

Я использовал правильное пространство имен впереди и добавил let() в свою спецификацию.

 use TestBundleTestBundleServiceTestService;
class TestServiceSpec extends ObjectBehavior
{
/**
 * @param TestRepository $repository
 */
function let(
    TestRepository $repository,
)
{
    $this->beConstructedWith($repository, $validator, $eventDay, $log);
}

/**
 *
 */
function it_is_initializable()
{
    $this->shouldHaveType('TestBundleTestBundleServiceTestService');
}
 

И мой сервис:

 use TestBundleTestBundleRepositoryTestRepository;

/**
 * Test service class.
 */
class TestService
{
    /**
     * Repository
     * @var TestBundleTestBundleRepositoryTestRepository
     */
    protected $repository;

    /**
     * Constructor.
     *
     * @param TestRepository $repository   Doctrine mongodb object mapper.
     */
    public function __construct(TestRepository $repository)
    {
        $this->repository = $repository;
    }
 

Я понятия не имею, что не так, и не могу найти никаких ресурсов в Интернете / stackoverflow.
Заранее спасибо за вашу помощь 🙂

Комментарии:

1. Проблема решена, комментарий не указывал на полный путь к serviceclass . /** * @param TestBundleTestBundleRepositoryTestRepository $repository */ функция let( TestRepository $repository, ) { $this->beConstructedWith($repository, $validator, $eventDay, $log); }

Ответ №1:

Возможно, вы забыли use инструкцию в своем файле спецификации:

 use TestBundleTestBundleRepositoryTestRepository;

class TestServiceSpec
{
   ...