Sorry i missed your messages, I wish I could just receive emails for
discussions I'm taking part in.

Also I'm sorry about those instructions - I should have been more
specific!

I've ran in to another problem which I thought I'd mention in case you
run in to it too: the sessions are staying around between test cases.
I noticed it when some of my flash messages were set in one test then
showed up in my next one. So in my web test case I've had to add the
following tearDown:

    protected function tearDown()
    {
        if ($this->kernel !== null && $this->kernel->isBooted()) {
            $container = $this->kernel->getContainer();

            // Kill session
            $session = $container->get('session');
            $session->clear();
            $session->save();

            // Shut down kernel
            $this->kernel->shutdown();
        }
    }

I haven't been able to find why it's happening in the core, but
hopefully this can save someone else a bit of pain

On May 5, 2:06 am, Donald <chekot...@gmail.com> wrote:
> Never mind, got an answer here:
>
> http://groups.google.com/group/symfony-users/browse_thread/thread/4c5...
>
> Thanks again for your help.
>
> On May 4, 9:38 am, Donald <chekot...@gmail.com> wrote:
>
>
>
>
>
>
>
> > Screwed up that copy & paste!
>
> > The correct error is: There is no extension able to load the
> > configuration for "test.client.class"
>
> > On May 4, 9:30 am, Donald <chekot...@gmail.com> wrote:
>
> > > I tried setting up a custom Client as you explained, but I'm getting
> > > an error complaining that "test.client.class: com\frazerbilt\quartz
> > > \Component\Test\Client"
>
> > > I put the new config line in my config_test.yml.
>
> > > Any ideas what I'm doing wrong?
>
> > > On May 4, 7:35 am, Donald <chekot...@gmail.com> wrote:
>
> > > > None of my tests use multiple requests, so I haven't run into that
> > > > yet. But I'm sure I will at some point.
>
> > > > Thanks for the workaround, it looks like a nice clean fix.
>
> > > > On May 3, 6:03 pm, danielholmes <dan...@creatio.com.au> wrote:
>
> > > > > With the in memory db, I still have the problem of multi request tests
> > > > > where the db wont be present across both. Have you run in to this
> > > > > problem? e.g.:
>
> > > > >     $crawler = $this->client->request('GET', '/contact');  // Request
> > > > > 1, container created
> > > > >     $form = $crawler->filter('#user-form 
> > > > > input.button')->form($params);
>
> > > > >     $this->client->submit($form);   // Request 2, kernel shutdown in
> > > > > Client->doRequest so db lost
>
> > > > > To solve this you can add this parameter in your config:
>
> > > > >     test.client.class: MyProject\Test\Client
>
> > > > > Then within the MyProject\Test\Client I've been using this to keep
> > > > > that in memory connection:
>
> > > > >     protected function doRequest($request)
> > > > >     {
> > > > >         if ($this->hasRequest)
> > > > >         {
> > > > >             $container = $this->kernel->getContainer();
> > > > >             $conn = $container-
>
> > > > > >get('doctrine.dbal.default_connection');
>
> > > > >             $this->kernel->shutdown();
> > > > >             $this->kernel->boot();
>
> > > > >             $newContainer = $this->kernel->getContainer();
> > > > >             $newContainer->set('doctrine.dbal.default_connection',
> > > > > $conn);
> > > > >         }
> > > > >         else
> > > > >         {
> > > > >             $this->hasRequest = true;
> > > > >         }
>
> > > > >         $response = $this->kernel->handle($request);
>
> > > > >         return $response;
> > > > >     }
>
> > > > > On May 4, 1:43 am, Donald <chekot...@gmail.com> wrote:
>
> > > > > > Looks like other people are experiencing this problem, and
> > > > > > unfortunately Fabien doesn't seem to think it's a real issue...
>
> > > > > >https://github.com/symfony/symfony/pull/742#issuecomment-1094468
>
> > > > > > On May 3, 10:40 am, Donald <chekot...@gmail.com> wrote:
>
> > > > > > > Hi Daniel,
>
> > > > > > > Thanks for the info. Although commenting out that line does 
> > > > > > > resolve
> > > > > > > the problem, I think there's something going on a little deeper.
>
> > > > > > > My tests actually passed after this commit, so something has 
> > > > > > > changed
> > > > > > > since then. Maybe something in the way the kernel actually 
> > > > > > > carries out
> > > > > > > the shutdown / reboot process...
>
> > > > > > > On May 2, 6:28 pm, danielholmes <dan...@creatio.com.au> wrote:
>
> > > > > > > > Hi Donald,
>
> > > > > > > > I'm glad I wasn't the only one having this problem. Thanks for
> > > > > > > > mentioning the spl_object_hash; I hadn't seen it before.
>
> > > > > > > > Using that, I found they are actually referring to different
> > > > > > > > containers. I tracked the problem down to this commit:
>
> > > > > > > >https://github.com/symfony/symfony/commit/91602dfef4051c400b12cf8f13f...
>
> > > > > > > > Specifically in the FrameworkBundle\Client.php class:
>
> > > > > > > >     protected function doRequest($request)
> > > > > > > >     {
> > > > > > > >         $this->kernel->shutdown();
>
> > > > > > > >         return $this->kernel->handle($request);
> > > > > > > >     }
>
> > > > > > > > If you comment out the $this->kernel->shutdown(); then the 
> > > > > > > > initial
> > > > > > > > test will work correctly (assuming you've warmed your cache in 
> > > > > > > > the
> > > > > > > > test environment - php app/console cache:warmup --env=test).
>
> > > > > > > > Most of my tests now pass with that removed (the others im 
> > > > > > > > working
> > > > > > > > through, look to mostly be url changes though), but I'm not 
> > > > > > > > sure of
> > > > > > > > the other implications
>
> > > > > > > > On May 3, 7:20 am, Donald <chekot...@gmail.com> wrote:
>
> > > > > > > > > With further testiing, I've verified the following:
>
> > > > > > > > > 1. The Controller see's no tables at all. Printing the 
> > > > > > > > > results of 
> > > > > > > > > $em->getConnection()->getSchemaManager()->createSchema() in
>
> > > > > > > > > testSomething() outputs the expected schema, whereas running 
> > > > > > > > > the same
> > > > > > > > > line in the action for /things/1.html outputs an empty schema.
>
> > > > > > > > > 2. The Controller and Test classes *are* using different 
> > > > > > > > > connections.
> > > > > > > > > Printing the results of spl_object_hash($em->getConnection()) 
> > > > > > > > > in both
> > > > > > > > > classes results in a different hash.
>
> > > > > > > > > I'll continue to investigate further, but I'd still 
> > > > > > > > > appreciate some
> > > > > > > > > input if anyone has any helpful pointers.
>
> > > > > > > > > Thanks.
>
> > > > > > > > > On May 2, 3:40 pm, Donald <chekot...@gmail.com> wrote:
>
> > > > > > > > > > I'm in the middle of upgrading my project to use Symfony 2 
> > > > > > > > > > Beta 1,
> > > > > > > > > > from it's current version of PR11, and I've run into a 
> > > > > > > > > > problem with
> > > > > > > > > > the tests that I can't work out.
>
> > > > > > > > > > I use pdo_sqlite for my tests, and create the schema in the 
> > > > > > > > > > setup
> > > > > > > > > > method of each test. This would work fine in PR11, but in 
> > > > > > > > > > Beta 1,
> > > > > > > > > > something has changed where the Client doesn't see the 
> > > > > > > > > > database that
> > > > > > > > > > my Test created.
>
> > > > > > > > > > Here's an example test:
>
> > > > > > > > > > class MyTest extends WebTestCase {
>
> > > > > > > > > >   protected function setUp() {
> > > > > > > > > >     $this->client = $this->createClient();
> > > > > > > > > >     $this->client->followRedirects(false);
>
> > > > > > > > > >     $this->container = $this->kernel->getContainer();
>
> > > > > > > > > >     $em = 
> > > > > > > > > > $this->container->get('doctrine.orm.entity_manager');
>
> > > > > > > > > >     $tool = new SchemaTool($em);
> > > > > > > > > >     $metaData = $em->getMetaDataFactory()->getAllMetaData();
> > > > > > > > > >     $tool->createSchema($metaData);
>
> > > > > > > > > >     $thing1 = new Thing();
> > > > > > > > > >     $thing1->name = 'Bob';
>
> > > > > > > > > >     $em->persist($thing1);
> > > > > > > > > >     $em->flush();
> > > > > > > > > >   }
>
> > > > > > > > > >   public function testSomething() {
> > > > > > > > > >     // just to demonstrate that the database and object 
> > > > > > > > > > *does* exist,
> > > > > > > > > > this works:
> > > > > > > > > >     $em = 
> > > > > > > > > > $this->container->get('doctrine.orm.entity_manager');
> > > > > > > > > >     echo get_class($em->find('MyBundle:Thing', 1));
>
> > > > > > > > > >     // This however, fails (assuming that the action at 
> > > > > > > > > > this URL will
> > > > > > > > > > attempt to load Thing1)
> > > > > > > > > >     $this->client->request('GET', 
> > > > > > > > > > sprintf('/things/1.html'));
> > > > > > > > > >     $response = $this->client->getResponse();
>
> > > > > > > > > >     // Response will be a stack trace stating "General 
> > > > > > > > > > error: 1 no
> > > > > > > > > > such table: thing"
> > > > > > > > > >     print_r($response);
> > > > > > > > > >   }
>
> > > > > > > > > > }
>
> > > > > > > > > > I've updated all my config files with the new cleaner dbal
> > > > > > > > > > configuration style, and as demonstrated by the fact that 
> > > > > > > > > > the fixtures
> > > > > > > > > > and the first couple of lines of this test works, it is 
> > > > > > > > > > configured
> > > > > > > > > > correctly.
>
> > > > > > > > > > Can anyone point me in the direction of what changed to 
> > > > > > > > > > break this? It
> > > > > > > > > > seems as if the MyTest and Client instances are not working 
> > > > > > > > > > from the
> > > > > > > > > > same EntityManager and/or Connection.
>
> > > > > > > > > > Thanks,
>
> > > > > > > > > > Donald

-- 
If you want to report a vulnerability issue on symfony, please send it to 
security at symfony-project.com

You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to symfony-users@googlegroups.com
To unsubscribe from this group, send email to
symfony-users+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en

Reply via email to