Действие контроллера PHPunit Dispatch с POST и формой - PullRequest
2 голосов
/ 07 декабря 2011

У меня есть тест PHPunit, подобный этому:

    public function testUsersCanRegisterWhenUsingValidData()
  {

    $this->request->setMethod('POST')
         ->setPost(array(
             'username'         => 'user123',
             'zip_code'         => '43215',
             'email'            => 'me1@something.com',
             'password'         => 'secret',
             'confirm_pswd'     => 'secret',
           ));

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

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

  }

, и действие контроллера пользователя, называемое регистром, выглядит так:

       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;

    }

Я получаю сообщение об ошибке в этой строке:

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

Это вызвано тем, что $ form-> getValue ('username') имеет значение NULL, потому что форма фактически не была отправлена, вместо этого PHPunit отправил действие и установил переменные POST.

Какя могу заставить это работать?

1 Ответ

4 голосов
/ 07 декабря 2011

Извините всех.Я закомментировал эту строку, чтобы попытаться изучить мою проблему:

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

, и оказалось, что мой входной тестовый ввод был недействительным, и вы не можете использовать $ form-> getValue для получения значенияневерная форма.

Я не получил никаких ответов, потому что эта строка не была закомментирована в моем сообщении и сработала бы.Пощечина ... MODS не стесняйтесь удалять этот пост, если вы думаете, что это никому не поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...