2012-07-20 32 views
5

Tôi đang phát triển một ứng dụng trong Bánh 2.2, và hiện đang viết một số thử nghiệm đơn vị. Các thử nghiệm mô hình đang hoạt động tốt, tôi có một số vấn đề với kiểm tra bộ điều khiển nói chung.Cakephp 2.0 mock auth

Tình hình: - hầu hết các hành động đòi hỏi một người dùng đăng nhập - có thành phần tùy chỉnh và các thư viện nhà cung cấp - Tôi có cố định cho tất cả các bảng

Vấn đề: - Nhiều hành động sử dụng "$ này -> Auth-> user() "để lấy dữ liệu người dùng - Nếu tôi viết kiểm tra cho hành động đó, dữ liệu người dùng (rõ ràng) không tồn tại

Giải pháp của tôi (không hoạt động): - Tôi đã thử giả lập thành phần auth, do đó nó sẽ chứa phương thức người dùng và luôn trả về một ar tĩnh ray chứa dữ liệu người dùng, nhưng nó trả về null, đây là đoạn mã:

$Days = $this->generate('Days', array('components' => 'Auth')); 
$Days->Auth->expects($this->once())->method('user')->will($this->returnValue(array(..userdata etc.))); 
$result = $this->testAction('/days/settings'); 

Nó chỉ nói rằng phương thức này không được gọi (phương pháp cài đặt trong bộ điều khiển Days gọi chính xác một lần). Điều gì là sai với mockup? Hmmm ..

Bất kỳ trợ giúp nào sẽ được đánh giá cao!

-edit- Mã của phương pháp này đang được thử nghiệm:

public function myDays() 
{ 
    $user = $this->Auth->user(); 
    $days = $this->Day->find('all', array('conditions' => array('user_id' => $user['id'], 'active' => 1))); 
    $this->set('days', $days); 
} 
+0

Bạn có đang gọi 'testAction' nhiều hơn một lần trong thử nghiệm của mình không? Đây có phải là toàn bộ phương pháp thử nghiệm của bạn không? –

+0

Xin chào, không, chỉ một lần thôi, đây là mã hoàn chỉnh trong hành động đó, vì nó không hoạt động, tôi không viết mã thử nghiệm khác cho nó .. –

+0

Xin vui lòng bao gồm cả phương pháp bạn đang thử nghiệm, nó có thể giúp đỡ để xem những gì đang xảy ra. –

Trả lời

1

Có thể sử dụng:

$Days->Auth->staticExpects(

do một người dùng() là một phương pháp tĩnh.

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