CakePHP控制器中的PHPUnit数据提供程序

CakePHP控制器中的PHPUnit数据提供程序,phpunit,Phpunit,我正在尝试使用dataProvider编写一个单元测试来测试控制器方法 但是,$this->contents始终返回null。dataProvider在CakePHP的控制器测试用例中工作吗 public function initValidateDataProvider() { $data['Event']['event_type'] = 1; $data['Event']['event_id'] = 1; $data['Event']['year'

我正在尝试使用dataProvider编写一个单元测试来测试控制器方法

但是,$this->contents始终返回null。dataProvider在CakePHP的控制器测试用例中工作吗

 public function initValidateDataProvider() {

    $data['Event']['event_type']    = 1;
    $data['Event']['event_id']      = 1;
    $data['Event']['year']          = date('Y');
    $data['Event']['name']          = 'test';
    $param[0] = $data;
    $provider[0] = $param;

    return $provider;
}

/**
 * @dataProvider initValidateDataProvider
 *
 */
public function testInitValidationAll($data) {

     $this->testAction(
        '/sb_organizers/events/init',array(
            'return' => 'contents',
            'data'   => $data,
            'method' => 'POST'
        )
    );

    debug($this->contents);
}
调试$this->contents;始终返回null

但如果我在没有数据提供程序的情况下运行它:

    public function testInitValidateAll() {
    $data['Event']['event_type']    = '';
    $data['Event']['etag_id']       = 0;
    $data['Event']['year']          = '';
    $data['Event']['name']          = '';

    $this->testAction(
        '/sb_organizers/events/init',array(
            'return' => 'contents',
            'data'=>$data
        )
    );
    debug($this->contents);
    }

它很好用。dataProvider在CakePHP的控制器测试用例中工作吗?我怀疑是$this->testAction不适用于dataProvider。

您是否通过执行var_转储来检查$data数组在这两种情况下是否相同?@gontrollez是的。它们是一样的。如果数据格式不同,PHPUnit将抛出异常。如果数据内容不同,$this->contents仍将返回一些内容。