Hi Matt,
Thanks for the explanation. I ensured that GGV_DISPATCH_CONTROLLER is set to
false:
public function setUp()
{
// Execute any startup code here
defined('GOGOVERDE_DISPATCH_FRONT_CONTROLLER') or
define('GOGOVERDE_DISPATCH_FRONT_CONTROLLER', false);
parent::setUp();
}
right where you suggested I should define it. I still get the same error.
Here is the output from phpunit:
1) testValidLoginShouldGoToIndexPage(Ggv_LoginTest)
Zend_Controller_Exception: No default module defined for this application
/Library/WebServer/ZendFramework-1.6.0RC3/library/Zend/Controller/Dispatcher/Standard.php:211
/Library/WebServer/ZendFramework-1.6.0RC3/library/Zend/Controller/Dispatcher/Standard.php:245
/Library/WebServer/ZendFramework-1.6.0RC3/library/Zend/Controller/Front.php:946
/Library/WebServer/ZendFramework-1.6.0RC3/library/Zend/Test/PHPUnit/ControllerTestCase.php:172
Any ideas what the reason for that could be?
Thanks, Peter
Matthew Weier O'Phinney-3 wrote:
>
> -- Peter Wansch <[EMAIL PROTECTED]> wrote
> (on Sunday, 31 August 2008, 04:19 PM -0700):
>> I wrote the following unit test case:
>>
>> class Ggv_LoginTest extends Zend_Test_PHPUnit_ControllerTestCase
>> {
>> public $bootstrap = '/Library/WebServer/Documents/GGV/www/index.php';
>>
>> public function testCallWithoutActionShouldPullFromIndexAction()
>> {
>> $this->dispatch('/');
>> $this->assertResponseCode(200);
>> }
>>
>> public function testValidLoginShouldGoToIndexPage()
>> {
>> $this->request->setMethod('POST')
>> ->setPost(array(
>> 'user_name' => TESTS_LOGIN_NAME,
>> 'user_password' => TESTS_LOGIN_PASSWORD
>> ));
>> $this->dispatch('/GGV/www/user/login/');
>> $this->assertResponseCode(200);
>> }
>> }
>>
>> The first test case that dispatches to '/' works. The second test case
>> that
>> dispatches to throws Zend_Controller_Exception: No default module defined
>> for this application. I use the same index.php bootstrap file for running
>> the application and testing the application. Here is a relevant excerpt:
>>
>> defined('GGV_DISPATCH_FRONT_CONTROLLER') or
>> define('GGV_DISPATCH_FRONT_CONTROLLER', true);
>>
>> // Set the session into the registry
>> Zend_Registry::set('session', $session);
>>
>> // Set up the front controller and dispatch
>> $front = Zend_Controller_Front::getInstance();
>> $front->registerPlugin(new LoggerPlugin());
>> $front->throwExceptions(false);
>> $front->setControllerDirectory(GGV_PATH_ROOT .
>> '/application/controllers');
>> $front->setBaseUrl($config->www->baseurl);
>> if (GGV_DISPATCH_FRONT_CONTROLLER)
>> {
>> $front->dispatch();
>> }
>>
>> the only difference is that in my test case I require_once a test
>> configuration PHP file that defines GGV_DISPATCH_FRONT_CONTROLLER to
>> false
>> as per the documentation the bootstrap file must not dispatch the front
>> controller. Unlike all the samples given, I don't use a Bootstrap class
>> or
>> callback in my testcase. It appears that Zend_Test does not use the
>> $front
>> controller I setup in my index.php but creates it's own which isn't
>> initialized and throws the error.
>
> Well, Zend_Controller_Front is a singleton, so any instance of it is
> going to be the same instance, regardless of where it is executed.
>
>> I have also experimented with adding a setUp
>>
>> public function setUp()
>> {
>> // Execute any startup code here
>
> I would define GGV_DISPATCH_FRONT_CONTROLLER right here, before calling
> parent::setUp() to ensure that you don't accidently dispatch the
> controller during bootstrapping.
>
>> parent::setUp();
>> }
>>
>> method into my testcase and trying to set the
>> $this->frontController=$front
>> but the global variable that gets set in index.php is not available. What
>> am
>> I doing wrong here? Any help is appreciated.
>
> --
> Matthew Weier O'Phinney
> Software Architect | [EMAIL PROTECTED]
> Zend Framework | http://framework.zend.com/
>
>
--
View this message in context:
http://www.nabble.com/Zend_Test_PHPUnit_ControllerTestCase-with-bootstrap-php-file-tp19247111p19249003.html
Sent from the Zend Framework mailing list archive at Nabble.com.