Unit testing 错误单元测试symfony
当我尝试执行这个单元测试时 我有个问题 这就是我的功能测试错误Unit testing 错误单元测试symfony,unit-testing,phpunit,symfony,Unit Testing,Phpunit,Symfony,当我尝试执行这个单元测试时 我有个问题 这就是我的功能测试错误 public function testErrors(){ $client = static::createClient(); $crawler = $client->request('GET', '/add'); $form = $crawler->selectButton('save')->form(array( 'user[firstName]' =&g
public function testErrors(){
$client = static::createClient();
$crawler = $client->request('GET', '/add');
$form = $crawler->selectButton('save')->form(array(
'user[firstName]' => 'test1',
'user[lastName]' => 'test',
'user[email]' => 'test@gmail.com',
));
$crawler = $client->submit($form);
// 3 errors
$this->assertTrue($crawler->filter('.error_list')->count() == 3);
// Error firstName field
$this->assertTrue($crawler->filter('#firstName')->siblings()->first()->filter('.error_list')->count() == 1);
// Error lasName field
$this->assertTrue($crawler->filter('#lastName')->siblings()->first()->filter('.error_list')->count() == 1);
// Error email field
$this->assertTrue($crawler->filter('#email')->siblings()->first()->filter('.error_list')->count() == 1);
}
我有这个问题
InvalidArgumentException:当前节点列表为空
public function testErrors(){
$client = static::createClient();
$crawler = $client->request('GET', '/add');
$form = $crawler->selectButton('save')->form(array(
'user[firstName]' => 'test1',
'user[lastName]' => 'test',
'user[email]' => 'test@gmail.com',
));
$crawler = $client->submit($form);
// 3 errors
$this->assertTrue($crawler->filter('.error_list')->count() == 3);
// Error firstName field
$this->assertTrue($crawler->filter('#firstName')->siblings()->first()->filter('.error_list')->count() == 1);
// Error lasName field
$this->assertTrue($crawler->filter('#lastName')->siblings()->first()->filter('.error_list')->count() == 1);
// Error email field
$this->assertTrue($crawler->filter('#email')->siblings()->first()->filter('.error_list')->count() == 1);
}
这是我的控制器
/**
* @Route("/add", name="addPage")
*/
public function AddAction(Request $request)
{
$user = new User();
$form = $this->createFormBuilder($user)
->add('email', TextType::class)
->add('firstName', TextType::class)
->add('lastName', TextType::class)
->add('save', SubmitType::class, array('label' => 'Add'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$firstName = $form['firstName']->getData();
$lastName = $form['lastName']->getData();
$email = $form['email']->getData();
$user->setFirstName($firstName);
$user->setLastName($lastName);
$user->setEmail($email);
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
$this->addFlash('notice','user added' );
return $this->redirectToRoute('listPage');
}
我认为是您的
selectButton('save')
导致了错误。尝试使用按钮标签Add
而不是save
哪个语句/行出现此错误?以及为什么在没有任何约束的情况下希望表单得到3个验证错误?此行中的错误“);“”因此在这条语句中,$form=$crawler->selectButton('save')->form(数组('user[firstName]'=>'test1','user[lastName]'=>'test','user[email]'=>'test@gmail.com', ));在访问爬虫程序之前,我将为fields添加一个约束,检查请求是否正常,比如$this->assertTrue($client->getResponse()->issusccessful())代码>在客户端->请求之后
在哪一行?让我们尝试将语句分开,以跟踪如下错误:``$button=$crawler->selectButton('Add')$form=$button->form()$form->get('form[firstName]')->setValue('test1')$form->get('form[lastName]')->setValue('test')$表单->获取('表单[电子邮件])->设置值('test@gmail.com'); ``` 另外,我使用“form”作为字段名选择器,因为对我来说,这就是它呈现表单的方式。