如何将参数传递给控制器​​(测试)

时间:2017-07-04 08:16:52

标签: php codeigniter testing phpunit

我正在使用PHPUnit测试一个至少有一个参数的控制器:

public function testSomething($a,$b='')
{
}

我试图用这种方式测试它:

$params = array('a'=>'foo','b'=>'bar');
$output = $this->request('POST', ['MyController','Something'], $params);

但我得到了:

  

ArgumentCountError:函数MyController :: Something

的参数太少

如何传递这些参数?

注意:我使用库将PHPUnit集成到Codeigniter:

"require-dev": {
        "kenjis/ci-phpunit-test": "^0.15.0"
    }

2 个答案:

答案 0 :(得分:3)

您可以使用CodeIgniter中的flash_。请尝试以下内容:

$params = array('a'=>'foo','b'=>'bar');
$this->session->set_flashdata('params ', $params);
$output = $this->request('POST', ['MyController','Something']);

控制器:

在Controller中,您可以从flashdata函数中获取值。

$this->session->flashdata('params');

$a='foo';$b='bar';
$output = $this->request('POST', ['MyController','Something',$a,$b]);

答案 1 :(得分:0)

另一种选择:

=>Any