delphi unit-testing mocking

¿Cuál es tu biblioteca burlona de Delphi favorita?



unit-testing mocking (6)

Quiero comenzar a usar objetos simulados en mis proyectos Delphi.

Después de un google rápido, encontré esos:

Entonces mi pregunta es ¿cuál es tu favorito y por qué?


¡Woaw, soy el líder del proyecto PascalMock y es la primera vez que escucho sobre Delphi Mock Wizard! Muy buena adición a PascalMock.

Por cierto, también tienes algunos marcos falsos más pequeños:

Tal vez hay algunos otros alrededor?

También PascalMock es de código abierto y las contribuciones o ideas de mejoras son bienvenidas.

PD: la última versión de PascalMock de CVS agrega características adicionales a la versión 1.1, como:

  • creación de simulación automática en tiempo de ejecución para interfaces que utilizan RTTI
  • permitir esperar llamadas de métodos en cualquier orden
  • espera al menos x llamadas de un método

Aunque es estable, PascalMock no se ha trabajado en años.

Hay una nueva biblioteca falsa llamada Delphi Mocks . Funciona solo con Delphi XE2 o más reciente.


Delphi Mock Wizard solo genera asistentes para Pascal Mock. No son implementaciones competitivas.



Nuestro framework Open Source mORMot ahora puede, en su versión inestable, resguardar o simular cualquier interfaz Delphi.

Como de costumbre, la mejor manera de explicar lo que hace una biblioteca es mirar el código que lo usa. Aquí hay un ejemplo (similar al enviado con RhinoMocks ) de verificar que cuando ejecutamos el escenario "Olvidé mi contraseña", recordamos llamar al método Save() correctamente:

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;

Y ... eso es todo, ya que la verificación tendrá lugar cuando se IUserRepository instancia de IUserRepository .

Características disponibles (algunas son únicas en comparación con otros marcos de burla de Delphi):

  • Separación clara entre stubs y mocks , con integración con nuestras clases de Unit Testing ;
  • Controle out parámetros var y out como valor devuelto, además de un resultado de función;
  • Definición de anulación a través de una interfaz fluida, o un delegado / devolución de llamada;
  • Burlarse de patrones de "esperar-ejecutar-verificar" y / o "ejecutar-verificar" (también conocido como "espiar de prueba"), según las opciones, dependiendo de las expectativas de prueba;
  • Método integrado de rastreo de llamadas;
  • Código abierto, que funciona desde Delphi 6 hasta XE3;
  • Ligero y rápido (no confíe en TVirtualInterface lento).

Ver artículos relacionados del blog:


Prueba Dsharp . Es como Delphi Mocks, pero sin Memory Leaks.

En mi humilde opinión DSHARP es mejor, aunque estaba emocionado con Delphi Mocks al principio.