О том, как проверить работоспособность настройки, см. Ответ @Gordons.
Я бы хотел сказать, что вам не нужно , чтобы проверить это.
Ваши модульные тесты должны убедиться, что public API вашего класса работает как положено. Вам не важно (для тестирования), как ваши значения хранятся внутри, поэтому вам не нужно требовать , чтобы утверждать это. При таком способе ваши тесты также проверяют только , что делает ваш класс , а не , как класс делает это
Дело в том, что вам не нужно менять свои тесты, когда вы меняете свой класс, не влияя на то, что он делает
Ради аргумента, скажем, SomeClass - это то, что в конце концов выплевывает HTML.
class SomeClass {
public function setValue($name, $value)
{
// do some stuff
}
public function doSomething(array $values)
{
foreach ($values as $name=>$value) {
$this->setValue($name, trim($value));
}
}
public function createHTML()
{
$return = "";
foreach($this->values as $key => $value) {
$return .= "<div is='$key'>$value</div>";
}
return $return;
}
}
Если это все, что делает ваш класс, то абсолютно достаточный тест для этого класса может выглядеть следующим образом:
class SomeClassTest extends PHPUnit_Framework_TestCase {
public function testHtmlGenerationWithTwoValuesSet() {
$o = new SomeClass();
$o->setValue("foo", "bar");
$o->setValue("x", "y");
$result = $o->createHTML();
$this->assertSame(
2,
substr_count("<div>", $result),
"There should be as many divs as there are values set"
);
$this->assertTrue(
strpos("<div>bar</div>") !== false
"String should contain a set value enclosed in divs"
);
}
}
Опять же: речь идет о тестировании поведения вашего класса, не о тестировании каждого метода самостоятельно . Ваш набор тестов будет гораздо более ценным, если вы справитесь с этим
Хотя пример с html может быть неправильным, он показывает, как довольно хорошо тестировать поведение (надеюсь)