Тестируемый код - пример небольшого приложения

Я тратил время на усвоение методологий написания тестируемого кода, и я наткнулся на отличный пост Миско Хевери, в котором он четко объясняет, как подходить к зависимостям при построении приложений, используя, например, фабрики для загрузки всех объектов и, таким образом, сокращения строк зависимостей, которые усложняют тестирование.

В своем посте он дает минимальный, но проницательный пример того, как он настраивает приложение на java, бесстыдно цитируемый ниже с большим уважением к этому чуваку:

// Your main should look like this:
class Main {
  public static void main(String…args) {
    AppFactory factory = new AppFactory(args);
    MyApp app = factory.create();
    app.run();
    }
}

Затем он заявляет:

Обратите внимание, как код разбит на три этапа. Создать фабрику, создать приложение, запустить приложение. Это делает его проверяемым. Независимо от того, какое у вас приложение, вы должны следовать этому шаблону. Чтобы разместить синглтоны в нужных местах, Factory создает только один экземпляр, а затем передает этот экземпляр конструкторам всех классов при вызове new. См .: http: //misko.hevery. com / 2009/03/30 / Collaborator-vs-the-factory /

Я не разбираюсь в Java, но предполагаю, что это можно имитировать в php, за вычетом, конечно, метода main (), но откуда бы $ args from в контексте веб-приложения? И инициализация?

Мне было бы очень интересно увидеть минимальный пример тестируемого приложения на PHP или даже ссылки на приложения, которые можно было бы считать эффективными для тестирования. Меня больше всего интересует инициализация. Моя цель - не копировать и вставлять, а учиться на том, что сделали опытные программисты ООП.

Я рылся в коде нескольких популярных библиотек кода: Zend, Symphony, но эти фреймворки не являются запускаемыми приложениями и кажутся "слишком огромный, слишком быстрый ", чтобы я мог понять четкую картину. Кроме того, в этой структуре были отмечены некоторые недостатки, касающиеся практики тестирования. Просто небольшой пример, если возможно (даже если не запускается), это дало бы мне лучшее понимание правильной практики компоновки кода ООП при запуске небольшого приложения с нуля.

7
задан hakre 20 December 2012 в 20:24
поделиться