Tôi chỉ mới bắt đầu sử dụng PHPUnit với Zend và cần ít sự trợ giúp để tìm ra cách các bài kiểm tra này hoạt động như thế nào.Zend 2: Bài kiểm tra đơn vị cho lớp mẫu
Tôi muốn kiểm tra xem biểu mẫu có trả về bất kỳ thông báo lỗi nào không nếu tôi không chuyển bất kỳ thông số POST nào.
Vấn đề là một lĩnh vực từ hình thức của tôi đang sử dụng lỗi DoctrineModule\Form\Element\ObjectSelect
...
$this->add(array(
'type' => 'DoctrineModule\Form\Element\ObjectSelect',
'name' => 'user',
'attributes' => array(
'id' => 'user-label',
),
'options' => array(
'object_manager' => $em,
'target_class' => 'Application\Entity\User',
'property' => 'username',
'label' => 'User:',
'display_empty_item' => true,
'empty_item_label' => '---',
'label_generator' => function($entity) {
return $entity->getUsername();
},
),
));
...
tôi nhận được sau Học thuyết của:
Fatal error: Call to a member function getIdentifierFieldNames() on null
Tôi cố gắng ghi đè lĩnh vực này với đối tượng chế giễu, tuy nhiên Zend doesn' t cho phép objects
trong type
, chỉ cần tên lớp (string
), vì vậy mã này không hoạt động:
public function testIfFormIsValid()
{
$objectSelect = $this->getMockBuilder('DoctrineModule\Form\Element\ObjectSelect')
->disableOriginalConstructor()
->getMock();
$objectSelect->expects($this->any())
->method('getValueOptions')
->will($this->returnValue(array()));
$form = new \AppModuleComment\Form\Comment('form', array(
'em' => $this->em // Mocked object
));
$form->add(array(
'type' => $objectSelect,
'name' => 'user',
'attributes' => array(
'id' => 'user-label',
),
'options' => array(
'object_manager' => $this->em,
'target_class' => 'Application\Entity\User',
'property' => 'username',
'label' => 'User:',
'display_empty_item' => true,
'empty_item_label' => '---',
'label_generator' => function($entity) {
return $entity->getUsername();
},
),
));
$data = array(
'id' => null,
'user' => null
);
$form->setData($data);
$this->assertTrue($form->isValid(), 'Form is not valid');
}
Tôi đang làm gì sai? Tôi nên kiểm tra mã như thế nào?
Vì vậy .. làm cách nào tôi nên kiểm tra Nếu biểu mẫu trả về thông báo xác thực nếu ai đó gửi biểu mẫu trống? Hoặc nếu biểu mẫu hợp lệ nếu người dùng cung cấp dữ liệu chính xác? Tôi cần chức năng của Doctrine để kiểm tra điều này – user1409508
Có vẻ như bạn cần thực hành nhiều hơn để viết các bài kiểm tra đơn vị. Trước hết: bạn không viết mã bên trong bài kiểm tra đơn vị của mình - thay vào đó bạn chạy mã của mình. Tôi khuyên bạn nên chơi với các đơn vị dễ dàng hơn trước khi thử kiểm tra các bộ điều khiển tạo biểu mẫu sử dụng các trình quản lý thực thể. Bạn nên chắc chắn đơn vị của bạn là gì mà bạn muốn kiểm tra và nếu bạn muốn sử dụng thử nghiệm tăng gấp đôi hoặc có một số liệu cố định và như vậy. – iRaS
Có lẽ bạn đúng Tôi cần thực hành nhiều hơn để viết bài kiểm tra. Nhưng bạn đã không giải thích làm thế nào tôi nên kiểm tra các hình thức và inputFilters kết nối với Doctrine. Tôi muốn kiểm tra xem tôi có nhận được thông báo xác thực khi người dùng gửi biểu mẫu trống hoặc anh bỏ qua một số đầu vào. Lý do tôi viết mã trong các bài kiểm tra của tôi là tôi muốn hiển thị những gì tôi đã cố gắng để làm cho nó hoạt động với Doctrine – user1409508