Efreeti
Новичок
Как тестировать методы, работающие с private-полями
Вопрос скорее к TDD infected.
Вот пример кода:
Как стоит тестировать (unit-tests) методы setLogin(), setPassword(), getXml()?
Понятно, что на сеттеры можно забить (хоть и не хотелось бы), но третья функция имеет логику, которую может меняться, и её не хочется оставлять без тестов.
Я вижу 2 выхода:
а) Не объявлять поля приватными (но ухудшается инкапсуляция)
б) Не тестировать их в рамках unit-тестов, только в acceptance (т.е. не сами методы, а всё целиком).
Какие ещё есть идеи?
Вопрос скорее к TDD infected.
Вот пример кода:
PHP:
class Logon {
private $login = '';
private $pwd = '';
private $error = true;
public function setLogin($str) {
$this->login = $str;
}
public function setPassword($str) {
$this->pwd = $str;
}
// Ещё методы для обработки, в том числе в них
// выставляется $this->error в true в случае ошибки
public function getXml() {
if ($this->error) {
return '
<logon staus="error">
<login value="'.$this->login.'">
<password value="'.$this->pwd.'">
</logon>';
}
else {
return '<logon staus="ok"></logon>';
}
}
}
Понятно, что на сеттеры можно забить (хоть и не хотелось бы), но третья функция имеет логику, которую может меняться, и её не хочется оставлять без тестов.
Я вижу 2 выхода:
а) Не объявлять поля приватными (но ухудшается инкапсуляция)
б) Не тестировать их в рамках unit-тестов, только в acceptance (т.е. не сами методы, а всё целиком).
Какие ещё есть идеи?