Symfony2 enhet sjef i tester

stemmer
4

I'am skriver enhet-tester for symfony2 prosjektet. For eksempel jeg vil teste noen klasse som krever Lære \ ORM \ EntityManger inctance:

// Class for testing
// ...
class CategoryManager
{
   public function __construct( EntityManager $em )
   {
       // ...

Så, jeg trenger for å lage Lære \ ORM \ EntityManager eksempel i mine andels tester og gi det til konstruktør som dette:

// Testing
// ...
$category1 = new Category();
$category2 = new Category();
$categories = array( $category1, $category2 );
$query = $this->getMock( '\Application\BackendBundle\Tests\Mocks\Doctrine\ORM\Query', array(), array(), '', false );
$query->expects( $this->any() )
      ->method( 'getResult' )
      ->will( $this->returnValue( $categories ) );
$em = $this->getMock( 'Doctrine\ORM\EntityManger', array(), array(), '', false );
$em->expects( $this->any() )
   ->method( 'createQuery' )
   ->will( $this->returnValue( $query ) );
// ...

Vennligst gjør meg råd om hvordan å forbedre og automatisere entity_manager mock skapelse. Jeg gjør ikke sikker på at dette er den rette måten å skape spotter (opprettelsen av denne store spotter virker upraktisk for meg). Jeg vil være glad for noen råd.

Publisert på 04/04/2011 klokken 06:44
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Det høres ut som du kanskje teste en metode som starter ut ved å få et par kategorier, så gjør noe med dem. Hvis det er tilfelle, kan du dele metoden opp?

En metode for å søke i databasen ved hjelp av $ em, getACoupleOfCategories()som du kan teste med en database test hvis du virkelig ønsker å (selv om en enkel spørring metoden ikke skulle trenge enhetstesting, så lenge du er komfortabel at spørringen gjør hva det er mente å)

Og så en annen metode, doSomethingWithThem($categories)som i testing kan du bare passere kategoriene til direkte?

Eller ville det ikke fungere for hva du prøver å gjøre?

Svarte 27/05/2011 kl. 06:54
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more