Подтвердить что ты не робот

Какая ваша любимая дефолтная библиотека?

Я хочу начать использовать mock-объекты в моих проектах Delphi.

После быстрого google я нашел те:

Итак, мой вопрос: что вы любите и почему?

4b9b3361

Ответ 1

Woaw, я руководитель проекта PascalMock, и я впервые услышал о Delphi Mock Wizard! Очень приятное дополнение к PascalMock.

Кстати, у вас также есть несколько небольших фреймворков:

Возможно, есть и другие?

Также PascalMock является открытым исходным кодом, и приветствуются вклады или идеи улучшений.

PS: Последняя версия PascalMock от CVS добавляет дополнительные функции к версии 1.1, например:

  • автоматическое создание макета во время выполнения для интерфейсов с использованием RTTI
  • позволяет ожидать вызовы методов в любом порядке
  • ожидает не менее x вызовов метода

Ответ 2

Хотя он стабилен, PascalMock не работал в течение многих лет.

Существует новая макетная библиотека под названием Delphi Mocks. Он работает только с Delphi XE2 или новее.

Ответ 3

Попробуйте Dsharp. Это похоже на Delphi Mocks, но без утечек памяти.

IMHO DSHARP лучше, хотя я был в восторге от Delphi Mocks сначала.

Ответ 4

Наш открытый исходный код mORMot framework теперь может в своей нестабильной версии заглушить или издеваться над любым интерфейсом Delphi.

Как обычно, лучший способ объяснить, что делает библиотека, - это посмотреть на код, используя его. Вот пример (аналогичный тому, который поставляется с RhinoMocks), чтобы проверить, что при выполнении сценария "забыл мой пароль" мы вспомнили, что вы вызываете метод Save() должным образом:

procedure TMyTest.ForgotMyPassword;
var SmsSender: ISmsSender;
    UserRepository: IUserRepository;
begin
  TInterfaceStub.Create(TypeInfo(ISmsSender),SmsSender).
    Returns('Send',[true]);
  TInterfaceMock.Create(TypeInfo(IUserRepository),UserRepository,self).
    ExpectsCount('Save',qoEqualTo,1);
  with TLoginController.Create(UserRepository,SmsSender) do
  try
    ForgotMyPassword('toto');
  finally
    Free;
  end;
end;

И... это все, так как проверка будет происходить, когда экземпляр IUserRepository будет выпущен.

Доступные функции (некоторые из них уникальны по сравнению с другими фальсификациями Delphi):

  • Очистить различие между заглушками и mocks, с интеграцией с нашим Групповые классы тестирования;
  • Обрабатывать параметры var и out в качестве возвращаемого значения в дополнение к результату функции;
  • Определение stubbing через свободный интерфейс или делегат/обратный вызов;
  • Отказывание по шаблонам "ожидать-запустить-проверить" и/или "запустить проверку" (так называемый "тестовый шпион" ) по выбору в зависимости от ожиданий тестирования;
  • Интегрированная трассировка вызовов методов;
  • Open Source, работающий от Delphi 6 до XE3;
  • Легкий и быстрый (не полагайтесь на медленный TVirtualInterface).

Смотрите похожие статьи блога:

Ответ 5

Delphi Mock Wizard просто создает волшебников для Pascal Mock. Они не являются конкурирующими реализациями.