Тестирование и издевательство с Flex - PullRequest
0 голосов
/ 16 декабря 2009

Я разрабатываю «тупой» интерфейс, это приложение AIR, которое взаимодействует с «умным» сервером LiveCycle. В настоящее время существует около 20 пар запросов и ответов для приложения. По многим причинам (тестирование, разработка вне корпоративной сети и т. Д.) У нас есть несколько файлов XML с поддельными данными, и, если установлен определенный флаг конфигурации, файлы загружаются, определенный файл анализируется и используется для создания ложного ответа , Каждый XML-файл представляет собой набор ответов для различных ситуаций, все внутренне согласованы. В настоящее время у нас есть около 10 файлов XML, каждый из которых соответствует своей ситуации. Вероятно, это увеличится до 30-50 XML-файлов.

Нынешняя система была разработана мной во время одного из этих 90-часовых циклов выпуска, когда мы находились под принуждением, потому что LiveCycle снова вышел из строя, и у нас был крайний срок для выполнения. Большая часть мелкого дерьма была убрана.

Поддельные данные находятся в объекте с именем FakeData, со свойствами, такими как customerType1: XML, customerType2: XML, overdueCustomer1: XML и т. Д. Затем в конструкторе FakeData все свойства устанавливаются следующим образом:

customerType1:XML = FileUtil.loadXML(File.applicationDirectory.resolvePath("fakeData/customerType1.xml");

И всякий раз, когда вам нужны поддельные данные (это происходит в специальных FakeDelegates, расширяющих реальные делегаты LiveCycle), вы получаете их из экземпляра FakeData.

Это ужасно по многим причинам, но это работает. Одна неловкая часть заключается в том, что каждый раз, когда вы создаете экземпляр FakeData, он перезагружает все файлы XML.

Я пытаюсь выяснить, есть ли шаблон проектирования, отличающийся от Singleton, который может справиться с этим более элегантно. Ограничения:

  • Глобальные экземпляры не требуются (в настоящее время весь код, касающийся поддельных данных, включая поддельные делегаты, извлекается из производственных сборок без каких-либо побочных эффектов, и он должен оставаться таким). Это выводит заводскую модель из строя.
  • Может обрабатывать несколько объектов с использованием данных XML без проблем с производительностью.
  • XML-файлы читаются централизованно, так что другой код не должен знать, где находятся XML-файлы, и поэтому можно выполнить некоторую предварительную обработку (например, создать карту определенных значений тегов и связанного XML-файла).

Шаблоны проектирования или другие предложения по архитектуре будут с благодарностью.

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Взгляните на ASMock , который был разработан моим хорошим другом (и членом Ричардом Сзалай) и основан на издевательствах .nets Rhino. Мы использовали его в нескольких производственных средах, поэтому я могу поручиться за его стабильность.

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

0 голосов
/ 16 декабря 2009

Разве не было бы больше смысла делать традиционные насмешки с помощью насмешливых рамок? В зависимости от вашей реализации может быть возможно настроить ожидаемые значения, прочитав XML-файлы с поддельными данными.

Здесь - это проект Google Code, который предлагает макеты для ActionScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...