Doctine2 UnitTest ilişki içinde varlık kadar alay

0 Cevap php


I am trying to create unittest of a service class - class which has EntityManager injected and is responsible for loading and creating entities.

Sorun varlık oluşturur ve gerekli tüm ilgili kuruluşlar setleri kuruluşlar için (dizi) yöntemini oluşturmak içinde :: olduğunu. Yani bunun için sahte nesnesini kullanmak için tavsiye olacağını düşündüm, ama ben şu kodu kullandığınızda (burada da gördük: How to create a mock object of a doctrine entity?)

<?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;
}
?>

Bu tetikleyiciler: A new entity was found through a relationship that was not configured to cascade persist operations

Kullanımı:

$this->service->getDatabaseManager()->persist($role);

Test tetikler: Class Mock_Role_c64eda12 is not a valid entity or mapped super class.

Nasıl ya bu düzeltebilirim ya da ben ne daha iyi bir yaklaşım kullanabilir? (Bütün 'hizmet oluşturur ve entites devam' veya başka ne olursa olsun kötü bir fikir varsa bana bildirin lütfen ... Burada fazla geçerlidir hangisinin bilmiyorum)

Teşekkür ederiz!

0 Cevap