views:

874

answers:

1

I am used to writing unit tests in Zend Framework 1.9 using PHPUnit_Framework_TestCase for my application.

Now I am trying to write a unit test based on Zend_Test_PHPUnit_ControllerTestCase by using the bootstrapping by Zend_Application of Zend Framework. But I am unable to get it running.

Here is my nonworking example:

class FamilyControllerTest extends Zend_Test_PHPUnit_ControllerTestCase 
{

    public $application;

    public function setUp()
    {
        $this->bootstrap = array($this, 'appBootstrap');
        parent::setUp();
    }

    public function appBootstrap()
    {
      $this->application = new Zend_Application(
            APPLICATION_ENV, 
            APPLICATION_PATH . '/configs/application.ini'
        );
      $this->application->bootstrap();
    }

    public function testFooOverviewAction() 
    {
        $this->dispatch('/foo/overview');
        $this->assertQueryContentContains('div', 'Silvan');
    }
}

In the official documentation there are only examples that bootstrap the test environment using initialization plugins like it's explained in the official manual.

Any ideas?

+2  A: 

You've almost got it, but you have to assign your bootstrap as a parameter to your front controller instance in your test suite--just like Zend_Application automatically does, in a normal environment. In your setUp() add the following line:

$this->getFrontController()->setParam('bootstrap', $this->application->getBootstrap());
jason
Great. First question I asked on Stackoverflow. I got the correct response in just 4 hours. Thanks a lot!
Silvan Mühlemann