2011-07-01 1 views
6

Khi người dùng truy cập/người dùng/xác thực mà không có thông số bài đăng chính xác, ứng dụng Zend của tôi sẽ ném ngoại lệ zend. (Tôi nhận được thông báo "Lỗi đã xảy ra" chuẩn, được đóng khung trong bố cục của tôi). Đây là cố ý.Sự cố kiểm tra ngoại lệ với PHPUnit và Zend Framework

Tôi hiện đang cố gắng kiểm tra hành vi đó bằng PHPUnit. Đây là thử nghiệm của tôi:

/** 
* @expectedException Zend_Exception 
*/ 
public function testEmptyUserValidationParametersCauseException() { 
    $this->dispatch('/user/validate'); 
} 

Khi tôi chạy thử, tôi nhận được thông báo cho biết không thành công, "Mong đợi ngoại lệ Zend_Exception". Bất kỳ ý tưởng?

Tôi có các thử nghiệm khác trong tệp đang hoạt động tốt ...

Cảm ơn!

Trả lời

5

Plugin Zend_Controller_Plugin_ErrorHandler xử lý ngoại lệ cho bạn và Error_Controller mặc định buộc chuyển hướng 500 có thể có nghĩa là ngoại lệ bạn đang thử nghiệm không còn tồn tại nữa. Hãy thử kiểm tra đơn vị sau đây và xem nếu nó đi:

public function testUnknownUserRedirectsToErrorPage() 
{ 
    $this->dispatch('/user/validate'); 
    $this->assertController('error'); 
    $this->assertAction('error'); 
    $this->assertResponseCode('500'); 
} 

Nếu đây hoạt động sau đó nó cho thấy rằng do thời gian bạn đang render lỗi xem các ngoại lệ sẽ không còn tồn tại vì nó được chứa trong các mã trước khi chuyển hướng .

+0

Cảm ơn tomjowitt! Bạn đã nhận nó trong một! –

+0

Có cách nào để lấy lại ngoại lệ chưa được bắt đầu tương tự như 'sfBrowser-> getCurrentException()' của Symfony không? Nó có lẽ sẽ hữu ích để cũng xác minh rằng các ngoại lệ chính xác đã được ném. –

2

Vâng, có thể đơn giản là không thành công vì không có ngoại lệ nào được ném?

Bạn đã thử chạy thử nghiệm mà không có "@expectedException Zend_Exception" chưa? Có ngoại lệ gì không?

+0

+1 cho các đề xuất về chẩn đoán các ngoại lệ bị thiếu nhưng được mong đợi. Nhiều khả năng bạn sẽ thấy thẻ thử nghiệm sau khi xóa chú thích. Câu trả lời khác về bộ điều khiển lỗi có thể đúng. –