PHPUnit\Framework\TestCase 未找到 Symfony 4
PHPUnit\Framework\TestCase not found Symfony 4
我正在尝试将表单添加到控制器,但 returns 出现此错误:
Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /var/www/site/vendor/symfony/form/Test/FormIntegrationTestCase.php on line 21
虽然,我不太清楚为什么。乍一看似乎找不到 PHPUnit,但我的目录中的 运行 cat composer.json
另有说明:
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^4.1",
"symfony/console": "^4.1",
"symfony/expression-language": "^4.1",
"symfony/flex": "^1.0",
"symfony/form": "^4.1",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "^1.0",
"symfony/process": "^4.1",
"symfony/security-bundle": "^4.1",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/twig-bundle": "^4.1",
"symfony/validator": "^4.1",
"symfony/web-link": "^4.1",
"symfony/webpack-encore-pack": "*",
"symfony/yaml": "^4.1"
},
"require-dev": {
"symfony/debug-pack": "*",
"symfony/dotenv": "^4.1",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^4.1",
"symfony/profiler-pack": "*",
"symfony/test-pack": "^1.0",
"symfony/web-server-bundle": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\Tests\": "tests/"
}
},
"replace": {
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": "true"
}
}
}
所以我可以在那里看到它。这是我的控制器:
<?php
namespace App\Controller\Bug;
use App\Entity\Bug;
use App\Form\Bug\AddType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class AddController extends Controller
{
public function add(Request $request, \Swift_Mailer $mailer)
{
# I know setting errors this way isn't best
# but was faced with White Screen of Death
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
$bug = new Bug();
$form = $this->createForm(AddType::class, $bug);
$form->handleRequest($request);
$user = $this->getUser();
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$bug->setCreatedTs(new \DateTime());
$bug->setSubmittedBy($user);
$bug->setStatus('new');
try {
$em->persist($bug);
$em->flush();
$this->addFlash('success', 'Bug Submitted.');
$message = (new \Swift_Message('Incoming Bug'))
->setTo('t.taylor@sinnis.co.uk')
->setBody(
$this->renderView(
'emails/bugs/add.html.twig',
array(
'bug' => $bug,
'submitted_by' => $user
)
),
'text/html'
);
$mailer->send($message);
} catch (\Exception $e) {
$this->addFlash('danger', 'Processing Error. Please try again.');
}
return $this->redirectToRoute('bug_add');
}
return $this->render('bug/add.html.twig', array('form' => $form->createView()));
}
}
我的表单类型:
<?php
namespace App\Form\Bug;
use App\Entity\Bug;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Tests\Extension\Core\Type\TextTypeTest;
use Symfony\Component\OptionsResolver\OptionsResolver;
class AddType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('summary', TextTypeTest::class)
->add('description', TextareaType::class)
->add('priority', ChoiceType::class, array(
'choices' => array(
'Low' => 'low',
'Medium' => 'medium',
'High' => 'high',
'Site Breaking' => 'extreme'
)
))
->add('website', ChoiceType::class, array(
'choices' => array(
'Site One' => 'site-one',
'Site Two' => 'site-two',
'Site Three' => 'site-three'
)
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array());
}
}
我的树枝文件只是表单的基本实现:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
我不确定为什么会出现此错误或如何阻止它?我不是在尝试使用 PHPUnit,但它在这里抬起了丑陋的头..
我认为你这里有问题:
$builder->add('summary', TextTypeTest::class)
您需要将其更改为
$builder->add('summary', TextType::class)
所以你可以删除这个用途
use Symfony\Component\Form\Tests\Extension\Core\Type\TextTypeTest;
并添加这个:
use Symfony\Component\Form\Extension\Core\Type\TextType;
我正在尝试将表单添加到控制器,但 returns 出现此错误:
Fatal error: Class 'PHPUnit\Framework\TestCase' not found in /var/www/site/vendor/symfony/form/Test/FormIntegrationTestCase.php on line 21
虽然,我不太清楚为什么。乍一看似乎找不到 PHPUnit,但我的目录中的 运行 cat composer.json
另有说明:
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^4.1",
"symfony/console": "^4.1",
"symfony/expression-language": "^4.1",
"symfony/flex": "^1.0",
"symfony/form": "^4.1",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "^1.0",
"symfony/process": "^4.1",
"symfony/security-bundle": "^4.1",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/twig-bundle": "^4.1",
"symfony/validator": "^4.1",
"symfony/web-link": "^4.1",
"symfony/webpack-encore-pack": "*",
"symfony/yaml": "^4.1"
},
"require-dev": {
"symfony/debug-pack": "*",
"symfony/dotenv": "^4.1",
"symfony/maker-bundle": "^1.5",
"symfony/phpunit-bridge": "^4.1",
"symfony/profiler-pack": "*",
"symfony/test-pack": "^1.0",
"symfony/web-server-bundle": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\Tests\": "tests/"
}
},
"replace": {
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": "true"
}
}
}
所以我可以在那里看到它。这是我的控制器:
<?php
namespace App\Controller\Bug;
use App\Entity\Bug;
use App\Form\Bug\AddType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class AddController extends Controller
{
public function add(Request $request, \Swift_Mailer $mailer)
{
# I know setting errors this way isn't best
# but was faced with White Screen of Death
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
$bug = new Bug();
$form = $this->createForm(AddType::class, $bug);
$form->handleRequest($request);
$user = $this->getUser();
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$bug->setCreatedTs(new \DateTime());
$bug->setSubmittedBy($user);
$bug->setStatus('new');
try {
$em->persist($bug);
$em->flush();
$this->addFlash('success', 'Bug Submitted.');
$message = (new \Swift_Message('Incoming Bug'))
->setTo('t.taylor@sinnis.co.uk')
->setBody(
$this->renderView(
'emails/bugs/add.html.twig',
array(
'bug' => $bug,
'submitted_by' => $user
)
),
'text/html'
);
$mailer->send($message);
} catch (\Exception $e) {
$this->addFlash('danger', 'Processing Error. Please try again.');
}
return $this->redirectToRoute('bug_add');
}
return $this->render('bug/add.html.twig', array('form' => $form->createView()));
}
}
我的表单类型:
<?php
namespace App\Form\Bug;
use App\Entity\Bug;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Tests\Extension\Core\Type\TextTypeTest;
use Symfony\Component\OptionsResolver\OptionsResolver;
class AddType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('summary', TextTypeTest::class)
->add('description', TextareaType::class)
->add('priority', ChoiceType::class, array(
'choices' => array(
'Low' => 'low',
'Medium' => 'medium',
'High' => 'high',
'Site Breaking' => 'extreme'
)
))
->add('website', ChoiceType::class, array(
'choices' => array(
'Site One' => 'site-one',
'Site Two' => 'site-two',
'Site Three' => 'site-three'
)
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array());
}
}
我的树枝文件只是表单的基本实现:
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
我不确定为什么会出现此错误或如何阻止它?我不是在尝试使用 PHPUnit,但它在这里抬起了丑陋的头..
我认为你这里有问题:
$builder->add('summary', TextTypeTest::class)
您需要将其更改为
$builder->add('summary', TextType::class)
所以你可以删除这个用途
use Symfony\Component\Form\Tests\Extension\Core\Type\TextTypeTest;
并添加这个:
use Symfony\Component\Form\Extension\Core\Type\TextType;