How can i test an Add function on CakePHP2.0

前端 未结 2 1393
清酒与你
清酒与你 2021-01-20 19:36

I have been told that we have to test also the functions created by Cake like add/delete...

If i have a function like this one, how can i test it if it doesn\'t have

相关标签:
2条回答
  • 2021-01-20 20:09
    public function add() {
            $this->autoRender = false;
            if ($this->request->is('post')) {
                $this->Comment->create();
                if ($this->Comment->save($this->request->data)) {
                    echo json_encode(array('status' => 'ok'));
                } else {  
                    echo json_encode(array('status' => 'fail'));              
                }
            }
        }
    
    0 讨论(0)
  • 2021-01-20 20:28

    Here's a sort of generic way to test it.

    function testAdd() {
      $Posts = $this->generate('Posts', array(
        'components' => array(
          'Session',
          'RequestHandler' => array(
            'isAjax'
          )
        )
      ));
      // simulate ajax (if you can't mock the magic method, mock `is` instead
      $Posts->RequestHandler
        ->expects($this->any())
        ->method('isAjax')
        ->will($this->returnValue(true));
      // expect that it gets within the `->is('post')` block
      $Posts->Session
        ->expects($this->once())
        ->method('setFlash');
    
      $this->testAction('/posts/add', array(
        'data' => array(
          'Post' => array('name' => 'New Post')
        )
      ));
      // check for no redirect
      $this->assertFalse(isset($this->headers['Location']));
      // check for the ajax layout (you'll need to change 
      // this to check for something in your ajax layout)
      $this->assertPattern('/<html/', $this->contents);
      // check for empty view (I've never had an empty view but try it out)
      $this->assertEqual('', $this->view);
    }
    
    0 讨论(0)
提交回复
热议问题