2010-04-27 44 views
11

Tôi mới về thử nghiệm, tôi đang sử dụng PHPUnit để viết kiểm tra. Tất cả các trang web đã được thiết kế bằng cách sử dụng mô hình MVC.POST tham số để kiểm tra PHPUnit

Tôi muốn kiểm tra từng phương pháp trên bộ điều khiển của mình, vấn đề là các phương thức đó nhận được các tham số mặc dù biến $ _POST. Làm thế nào tôi có thể ghi đè lên biến này?

Cảm ơn trước Alejandra

Trả lời

15

Cách tiếp cận tốt nhất là để tóm tắt các yêu cầu vào một lớp học riêng biệt và không truy cập vào superglobals ở tất cả. Bằng cách này, bạn phân tách máy chủ thực tế và yêu cầu môi trường từ ứng dụng. Sau đó, bạn có thể dễ dàng yêu cầu Yêu cầu.

+0

Nhưng có một cần phải kiểm tra yêu cầu này lớp riêng biệt. Làm thế nào sẽ là cách tiếp cận tốt nhất để làm điều này? –

+0

@ViktorTodorov với thử nghiệm đơn vị. Và nếu bạn muốn thử nghiệm nó với nhiều SAPI: với một bài kiểm tra tích hợp – Gordon

9

Ngay cả khi một số sẽ nói nó không phải sạch, bạn có thể thiết lập dữ liệu trong $_POST, trước khi callng phương pháp của bạn: nó không chỉ đọc ;-)

17

Thứ nhất, nếu bạn đang sử dụng Zend_Test, sử dụng

$this->request->setMethod('POST')->setPost(array(insert array info here)); 

Nếu bạn không sử dụng, hãy thử điều này:

Cảnh báo: Không phải giải pháp tốt nhất, nhưng nó sẽ hoạt động!

Đặt này trong vật cố thiết lập của bạn

protected function setUp() 
    { 
     parent::setUp(); 
     $_POST = array(); 
    } 

Sau đó, trước khi bạn gọi thử nghiệm của bạn chỉ làm điều gì đó tương tự như sau:

$_POST = array(insert array data here) 
+0

Phần đầu tiên của câu trả lời này rất hữu ích. Cảm ơn. –

+0

Ngay cả phần thứ hai đã giúp tôi với các bài kiểm tra TYPO3 và Unit –

Các vấn đề liên quan