Как заглушки данных для PHPUnit с плагином, используя Zend_Auth, который перенаправляет при неудачной аутентификации - PullRequest
1 голос
/ 21 октября 2010

Я все еще новичок в phpunit, поэтому я надеюсь объяснить это правильно. Я пытаюсь запустить тест контроллера с помощью PHPUnit, однако плагин, использующий Zend_Auth, перенаправляет обратно на вход в систему. Как мне создать данные заглушки? Я попытался поместить его в свой setUp, но Zend_Auth, кажется, восстанавливается после setUp. Спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Мне нравится, как Wallgate использовал собственный Адаптер, предварительно заполнив логин. Попробую позже. Прямо сейчас я использую это.

    // login as a valid user
    $this->request
         ->setMethod('POST')
         ->setPost(array(
             'username' => 'foobar',
             'password' => 'foobar'
         ));
    $this->dispatch('/user/login');

    // to make another request, we need to reset both request and response
    $this->resetRequest();
    $this->resetResponse();
    $this->dispatch('user/contactdetail');

Последняя строка приводит к успешной авторизации на странице.

1 голос
/ 21 октября 2010

Вам просто нужно пройти аутентификацию в вашем тестовом сценарии вручную.Скажем, если у вас есть собственный класс My_Auth_Adapter, который реализует Zend_Auth_Adapter_Interface, вы можете сделать что-то вроде этого:

// authentication - you can place it in setUp() method if you want
$adapter = new My_Auth_Adapter('someusername', 'somepassword');
Zend_Auth::getInstance()->authenticate($adapter);

// checking if it's successful
$this->assertTrue(Zend_Auth::getInstance()->hasIdentity());

// testing your controller code
$this->dispatch('/some/url');
$this->assertController('some');
$this->assertAction('url');
$this->assertXpath(/*some element on your page*/);
// and so on
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...