Как проверить интерфейс моего плагина, который использует абстрактный класс? - PullRequest
2 голосов
/ 28 октября 2010

Я использую PHP 5.3 и SimpleTest, но более общие ответы приветствуются. Каждый плагин будет классом, который расширяет абстрактный класс ... как мне проверить, что этот интерфейс работает должным образом? Нужно ли создавать несколько плагинов и тестировать их? Или есть более приятный способ?

В качестве примера представьте, что вы пишете что-то, что представляет деньги. Пользователи могут расширить это с различными классами валюты.

реферат класса Money
{
приватный статический символ $;
приватная статическая $ num_decimals;

публичная функция __construct ($ amount) {...}
публичная функция __toString () {...}
}

Тогда плагин будет выглядеть так:

класс GBPound расширяет деньги
{
приватная статическая $ symbol = "£";
приватная статическая $ num_decimals = 2;
}

Возможно, я мог бы эмулировать множественное наследование, расширяя класс UnitTest и класс money, но это может привести к путанице!

Это так сложно, потому что модульное тестирование - это тестирование интерфейса, но сам класс является интерфейсом плагина.

Ответы [ 2 ]

1 голос
/ 28 октября 2010

Не уверен насчет простых тестов, но PHPUnit может создавать макеты абстрактных классов, которые позволяют вам тестировать их напрямую.

0 голосов
/ 11 ноября 2010

Я решил пойти на мысль протестировать интерфейс, создав пустой класс плагина.Мне это кажется намного чище, чем издеваться над абстрактным классом.(Однако я в процессе переноса всех своих тестов на PHPUnit по другим причинам.)

...