エンティティの読み込みと作成を担当するEntityManagerを持つサービスクラス - クラスのunittestを作成しようとしています。Doctine2 Unittestはエンティティ関係をモックアップします
問題は、エンティティを作成し、必要なすべての関連エンティティを設定するエンティティのin :: create(配列)メソッドです。それがトリガー
<?php
public function testCreate($email, $password)
{
$role = $this->getMock('Role');
$this->service->create(
array('email' => $email,
'password' => $password,
'role' => $role));
}
// service (simplified)
public function create(array $values)
{
$user = new User();
$user->setEmail($values['email'])
->setPassword($values['password'])
->setRole($values['role']);
$this->getDatabaseManager()->persist($user)->flush();
return $user;
}
?>
:新しい実体が設定されていなかった関係を通じて発見された。だから私は、このためにモックオブジェクトを使用することをお勧めだろうと思ったが、私は次のコード(How to create a mock object of a doctrine entity?もここで見て)を使用する場合カスケードに使用
操作を持続:テストで
$this->service->getDatabaseManager()->persist($role);
をトリガー:クラスMock_Role_c64eda12が有効なエンティティまたはマップされたスーパークラスではありません。
この問題を解決するにはどうすればよいですか? (どちらがもっとここに適用されているのかわかりません...サービス全体が作成して永続する場合、または悪い考えであれば教えてください)
ありがとう!