Я использую PHP 5.3 и SimpleTest, но более общие ответы приветствуются. Каждый плагин будет классом, который расширяет абстрактный класс ... как я могу проверить, что этот интерфейс работает правильно? Должен ли я создавать несколько плагинов и тестировать их? Или есть более удовлетворительный способ?Как проверить свой подключаемый интерфейс, который использует абстрактный класс?
В качестве примера, представьте себе что-то, чтобы представлять деньги. Пользователи могут расширять это с помощью разных валютных классов.
абстрактный класс Деньги
{
частный статический символ $;
private static $ num_decimals;общественная функция __construct ($ сумма) {...}
общественная функция __toString() {...}
}
Тогда плагин будет выглядеть следующим образом:
класс GBPound продлевает Деньги
{
частный статический $ symbol = "£";
private static $ num_decimals = 2;
}
Возможно, я мог бы подражать множественное наследование, расширяя класс UnitTest и класс денег, но это может запутаться!
Это так сложно, потому что модульное тестирование касается тестирования интерфейса, но сам класс - это подключаемый интерфейс.
В чем проблема? Почему вы не можете просто проверить класс «GBPound»? – NOtherDev
Потому что я хочу проверить способность сделать класс 'GBPound' или любую другую комбинацию классов. Если у класса есть пользователи в Анголе, я хочу, чтобы они могли использовать интерфейс для создания класса ANKwanza. –
Зачем вам все-таки нужен фунт? GBPound не настолько особенный, что он не мог быть представлен только Money. Просто создайте аргументы $ symbol и $ num_decimals, необходимые конструктору, и сохраните их нестатические. Также вы можете переименовать Money to Currency. – Gordon