Для этого случая и для тестирования интерфейса я бы написал как минимум 3 теста:
protected setUp() {
$this->_object = $this->getMockForAbstractClass(
'PickupPoint_Abstract', array(), '', false
);
}
public function testInstanceOf() {
$this->assertInstanceOf('PickupPoint_Abstract', $this->_object);
}
public function testMethodsExistance() {
$methods = get_class_methods($this->_object);
$this->assertTrue(in_array('getPickupPoints', $methods));
$this->assertTrue(in_array('getPickupPointDetails', $methods));
$this->assertTrue(in_array('__construct', $methods));
}
public function testMethodCount() {
$methods = get_class_methods($this->_object);
/**
* PHPUnit add seven own methods in 3.6.11 + __clone + count of these methods
*/
$this->assertEquals(11, count($methods));
}
С помощью этих тестов вы предотвратите опечатки, проверьте наличие требуемых методов и, если какие-либо новые методы будутдобавил, что этот тест будет нарушен, потому что количество методов изменилось, и это поведение, которое мы хотим.
Ну, это прекрасно работает для меня.Я всегда использую эти тесты для интерфейсов, но я думаю, что они могут быть использованы для абстрактных классов!