Так что я получил SimpleTest установить с CodeIgniter (https://github.com/ericbarnes/codeigniter-simpletest)PHP (CodeIgniter) - SimpleTest модульное тестирование ж/данные сеанса
У меня есть несколько простых тестов, запущенных и все выглядит хорошо. Но я ударяю блок. Я не знаю, как тестировать данные сеанса.
Дело в том, что тесты работают очень хорошо. Но я получаю некоторые исключения. Если я запускаю свои тесты отдельно (т. Е. Ничего, кроме вкладки «все» в simpletest), то проблем нет. И когда я запускаю все тесты, я получаю эту ошибку:
Неожиданная ошибка PHP [Невозможно изменить информацию заголовка - уже отправленные заголовки (вывод начат с */www/public/tests/simpletest/extensions/my_reporter .php: 193)] серьезность [E_WARNING] в [* /www/system/libraries/Session.php line 408] Blockquote
Теперь я предполагаю, что все это с использованием моего браузера для установки сеансов, 't установить/отключить их после завершения первого теста (в моем случае завершается тестовый пример модели пользователя, а затем второй тестовый пример (библиотека проверки подлинности), который имеет исключение.
I' Предполагая, что после завершения первого теста, заголовки уже отправлены.
<?php
class test_auth extends CodeIgniterUnitTestCase
{
public function __construct()
{
parent::__construct();
$this->UnitTestCase('Authorization Library');
$this->rand_good = rand(500,15000);
$this->rand_bad = rand(500,15000);
}
public function setUp()
{
$this->_ci->db->flush_cache();
$this->_ci->db->truncate('users');
$this->_ci->session->sess_destroy();
$this->_ci->session->unset_userdata('logged_in_id');
$u = new User();
$u->email = 'email' . $this->rand_good;
$u->password = 'pass' . $this->rand_good;
$u->confirm_password = 'pass' . $this->rand_good;
$u->save();
}
public function tearDown()
{
$u = new User();
$u->get();
foreach($u->all as $user)
{
$user->delete();
}
}
public function test_login_good_email_good_password()
{
$u = new User();
$u->email = 'email' . $this->rand_good;
$u->password = 'pass' . $this->rand_good;
$this->assertTrue($this->_ci->auth->login($u), 'login');
$this->assertTrue($this->_ci->auth->is_logged_in(), 'is logged in');
}
public function test_login_bad_email_bad_password()
{
$u = new User();
$u->email = 'email' . $this->rand_bad;
$u->password = 'pass' . $this->rand_bad;
$this->assertFalse($this->_ci->auth->login($u), 'login');
$this->assertFalse($this->_ci->auth->is_logged_in(), 'is logged in');
}
}
/* End of file test_auth.php */
Эти две линии, которые влияют на это являются session->sess_destroy()
и session->unset_userdata()
Эти линии в любом Teardown() или Настройка() будет вызывать тот же вопрос. Каждый из них вызывает исключение заголовка.
Я предполагаю, что я надеюсь, что смогу принять часть браузера из тестирования и что simpletest может имитировать это как-то.
Что делать, чтобы решить эту проблему?
пост некоторый код для стартеров. Я предполагаю, что если вы выведете контент в свой контроллер, это станет причиной. также проверить пробел после закрытия?>. но пост-контроллер – Ross
В моем коде нет контроллера. Я отправил тестовый класс, хотя это помогает. – Matthew