Symfony2: Testing entity validation constraints

后端 未结 7 1195
南旧
南旧 2020-12-07 16:35

Does anyone have a good way to unit test an entity\'s validation constraints in Symfony2?

Ideally I want to have access to the Dependency Injection Container within

7条回答
  •  独厮守ぢ
    2020-12-07 17:22

    I don't see a problem with the WebTestCase. If you don't want a client, don't create one ;) But using a possibly different service than your actual application will use, that's a potential pit fall. So personally, I've done like this:

    class ProductServiceTest extends Symfony\Bundle\FrameworkBundle\Test\WebTestCase
    {
    
        /**
         * Setup the kernel.
         *
         * @return null
         */
        public function setUp()
        {
            $kernel = self::getKernelClass();
    
            self::$kernel = new $kernel('dev', true);
            self::$kernel->boot();
        }
    
        public function testFoo(){
            $em = self::$kernel->getContainer()->get('doctrine.orm.entity_manager');
            $v  = self::$kernel->getContainer()->get('validator');
    
            // ...
        }
    
    }
    

    It's less DRY than Matt answer -- as you'll repeat the code (for each test class) and boot the kernel often (for each test method), but it's self-contained and require no extra dependencies, so it depends on your needs. Plus I got rid of the static require.

    Also, you're sure to have the same services that your application is using -- not default or mock, as you boot the kernel in the environnement that you wish to test.

提交回复
热议问题