0

私はこの質問として正確な問題に直面しています。 モックオブジェクトのCakePHPの「with」メソッドが機能しない

しかし、提供された答えは私にとってもうまくいきません。

これが問題です。コントローラのテスト ケース コード:

public function testCreate() {
$batches = $this->generate('ShippingBatches', array(
    'components' => array(
        'Session', 
        'Auth' => array('user', '_getUser')
        )
)); 

$batches->Auth->expects($this->once())->method('user') 
    ->with('id') 
    ->will($this->returnValue(1));

$batches->Session
    ->expects($this->once())
    ->method('setFlash');

$this->testAction('/shippingbatches/create', array('data' => '[3,6]', 'method' => 'post'));
}

コントローラーコード:

public function create(){
//Some code here
$d['ShippingBatch']['user_id'] = $this->Auth->user('id');
$this->ShippingBatch->save($d);
//some code here
}

エラー: SQLSTATE[23000]: 整合性制約違反: 1048 列 'user_id' を null にすることはできません テスト ケース: ShippingBatchesControllerTestCase(testCreate)

4

1 に答える 1

0

解決策は、ユーザーが静的関数であるため、expects()の代わりにstaticExpects()を使用することです。

$batches->Auth->staticExpects($this->once())->method('user') 
        ->with('id')
        ->will($this->returnValue(1)); 
于 2012-08-01T12:35:22.187 に答える