1

コントローラー内にこのコード行があり、codeigniter フレームワークを使用して記述されています。

public function search($bookmarkIndex=0)
{
    $searchString = trim($this->input->post("searchString"));
    $searchType = trim($this->input->post("searchType"));

    $search = array(
            'searchString'=>$searchString,
            'type'=>$searchType);

    // DOING SEARCH HERE...
}

ご覧のとおり、メソッドは CodeIgniter の $this->input->post を使用しています。これは単体テストが難しいことがわかりました。PHPUnit を使用してテストする必要がある場合、どのように値を設定すればよいですか? または、これを嘲笑する方法はありますか?以下は私の現在の単体テスト方法です。

// inside PHPUNIT TEST FOLDER
public function test_search()
{
    // I know this is not the way to set "post", below is just my 
    // expectation if I were able to set it. 
    $this->CI->input->post("searchString",'a');
    $this->CI->input->post("searchType",'contact');

    $searchString = $this->CI->input->post("searchString");
    echo $searchString; //always false.
    $this->CI->search();
    $out = output();
    // DO ASSERT HERE... 
}
4

1 に答える 1

2

$POST を使用して単体テストを以下に変更すると、正常に動作します。

public function test_search()
{

    $_POST["searchString"] = 'a';
    $_POST["searchType"] = 'contact';

    $this->CI->search();
    $out = output();

    $searchString = $this->CI->input->post("searchString");
    echo $searchString;
}
于 2013-11-13T05:48:20.470 に答える