PHPunit Verzendcontrolleractie met POST en formulier

Ik heb een PHPunit-test zoals deze:

    public function testUsersCanRegisterWhenUsingValidData()
  {

    $this->request->setMethod('POST')
         ->setPost(array(
             'username'         => 'user123',
             'zip_code'         => '43215',
             'email'            => '[email protected]',
             'password'         => 'secret',
             'confirm_pswd'     => 'secret',
           ));

    $this->dispatch('/account/register');

    $this->assertRedirectTo('/account/login');

  }

en een User controller-actie genaamd register zoals dit:

       public function registerAction()
        {

         //Instantiate the registration form model
          $form = new Application_Model_FormRegister();

         //Has the form been submitted?
          if ($this->getRequest()->isPost()) {

           //If the form data is valid, process it
            if ($form->isValid($this->_request->getPost())) {

             //Does an account associated with this username already exist?
              $account = $this->em->getRepository('Entities\Account')
                              ->findOneByUsernameOrEmail($form->getValue('username'), $form->getValue('email'));          

              if (! $account)
              {//do something
    .............
    ..............

} else {

            $this->view->errors = array(
              array("The desired username {$form->getValue('username')} has already been taken, or
              the provided e-mail address is already associated with a registered user.")
            );

          }

        } else {
          $this->view->errors = $form->getErrors();
        }

      }

      $this->view->form = $form;

    }

Ik krijg een fout in deze regel:

$account = $this->em->getRepository('Entities\Account')
                                  ->findOneByUsernameOrEmail($form->getValue('username'), $form->getValue('email'));

It's caused by $form->getValue('username') being NULL because the form has not actually been submitted, instead PHPunit has dispatched the action and set up the POST variables.

Hoe kan ik dit laten werken?

2

1 antwoord

Sorry iedereen. Ik had deze regel becommentarieerd om te proberen mijn probleem te bestuderen:

// If the form data is valid, process it
        if ($form->isValid($this->_request->getPost())) {

and it turns out that my input test input was not valid and you can't use $form->getValue to get the value of an invalid form.

Ik kreeg geen antwoorden omdat deze regel niet werd becommentarieerd in mijn bericht en zou hebben gewerkt. Klap hoofd ............ MODS voel je vrij om dit bericht te verwijderen als je denkt dat dit voor niemand een hulp is.

4
toegevoegd