#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
{
...