2011-11-24 10 views
5

をテストするのではなく、デフォルトのデータベースを使用しています。は、私はCakePHPの2モデルをテストしていてこのようなモデルを嘲笑しているCakePHPの

"Database table mock__user_b6241a4cs for model User was not found." 

私は、モデル情報を再定義:今すぐ

$this->User->alias = 'User'; 
$this->User->useTable = 'users'; 

テスト作品よく、$testの代わりにdatabase.php$defaultデータベースを使用しています。何が起こっているのでしょうか?

モックされたオブジェクトを使用すると、テスト用のデータベース構成が変更されるのはなぜですか?疑似オブジェクトがカスタムテーブルを作成できない原因となるデータベースのアクセス許可に関連する可能性がありますか?

ありがとうございます!

答えて

2

私は最終的にgetMock()第三agumentでモデルのコンストラクタに適切なパラメータを渡すことによって、問題を解決:

$this->User = $this->getMock('User', 
    array('_saveUploadedFile', '_removeUploadedFile'), 
    array(false, 'users', 'test') 
); 

Stubs sectionに言われているものの適用PHPUnitのドキュメントで、この3番目の引数は、usersテーブルとtestデータソースを使用することを示しています。

は私もaliasプロパティの再定義を維持する必要があります:

$this->User->alias = 'User'; 

シンプル$this->User->read(null, 1)'User.a_column'が見つかりませんでしたというエラーを発生させているため。

José Lorenzoに感謝します。

0

私は以前この特定の問題に遭遇していませんでしたが、あなたが望む特定の接続を設定しようとしたのか不思議です。あなたはaliasuseTableを設定するので、同じ方法:

$this->User->useDbConfig = 'test'; 
関連する問題