jsonペイロードを受け入れるコントローラー関数をテストしようとしています。
testAction()のドキュメントによると、これは$options['data']を適切な文字列に設定することで実行できます。それは私のために働いていません。ここで引用されているドキュメントを参照してください:http://api20.cakephp.org/class/controller-test-case(testAction()セクションを下にスクロールしてください)。
これが私のテストケースです。
public function testCreate(){
//Some code here
$this->testAction('/shippingbatches/create', array('data' => '[3,6]', 'method' => 'post'));
//Some more code here
}
これが私のコントローラー機能です
public function create(){
debug($this->request); //This debug shows me an empty array in $this->request->data
ob_flush();
$order_ids = json_decode($this->request->data);
//Some more code here
}
コントローラ関数の最初の行は、$ this->request->dataに空の配列を表示しています。testAction()から渡された「データ」が実際の配列である場合、それはうまくいきます。ただし、文字列に設定されている場合はそうではありません(ドキュメントに記載されている場合とは異なります)。
これがデバッグの出力です。
object(Mock_CakeRequest_ef4431a5) {
params => array(
'plugin' => null,
'controller' => 'shippingbatches',
'action' => 'create',
'named' => array(),
'pass' => array(),
'return' => (int) 1,
'bare' => (int) 1,
'requested' => (int) 1
)
data => array()
query => array(
'case' => 'Controller\ShippingBatchesController'
)
url => 'shippingbatches/create'
base => ''
webroot => '/'
here => '/shippingbatches/create'
}
助けてください。
Gurpreet