Вместо написания одного теста на метод разработайте свои тесты с учетом функциональности, которую должен обеспечить класс.У вас будут тесты, которые используют несколько методов, но это нормально, потому что это указывает разработчику, что эти методы связаны.Вот где разработка, управляемая тестами, - где вы пишете тесты при разработке контракта для класса, прежде чем писать код для класса, - действительно блестяще.
class FooTest extends PHPUnit_Framework_TestCase
{
function testStartsEmpty() {
$foo = new Foo;
self::assertFalse($foo->has('bar'));
}
function testAddStoresKeys() {
$foo = new Foo;
$foo->add('bar', 'baz');
self::assertTrue($foo->has('bar'));
}
function testAddStoresKeysWithNullValues() {
$foo = new Foo;
$foo->add('bar', null);
self::assertTrue($foo->has('bar'));
}
function testAddStoresValues() {
$foo = new Foo;
$foo->add('bar', 'baz');
self::assertEquals('baz', $foo->get('bar')); // fatal error
}
}
Теперь, когда testAddStoresValues () завершается неудачно, пришло времяреализовать метод для получения значения для данного ключа: Foo::get($key)
.