AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Welches Mock-Framwork?

Ein Thema von freimatz · begonnen am 27. Nov 2020 · letzter Beitrag vom 28. Nov 2020
Antwort Antwort
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#1

Welches Mock-Framwork?

  Alt 27. Nov 2020, 15:05
Hallo,
ich überlege gerade für ein weiteres Projekt Mocks einzusetzen. Was nehme ich da am Besten? Ich habe schon etwas geggogelt und da gibt es "Delphi Mocks", aber auch bei Spring4D, welches ich schon einsetze ist wohl was dabei.
(Ich verwende kein DUnitX, sondern das "normale" Framework.)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Welches Mock-Framwork?

  Alt 27. Nov 2020, 16:56
Spring4D natürlich!

Ich bin da ja ein bisschen voreingenommen, aber ich behaupte, dass meine Implementierung fortgeschrittener ist, als die von Delphi-Mocks.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Welches Mock-Framwork?

  Alt 27. Nov 2020, 17:19


Danke. Versuche es mal damit.

Habe hier auch ein Beispiel gefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Welches Mock-Framwork?

  Alt 27. Nov 2020, 17:31
Lass mir ruhig reichlich Feedback zukommen, gern auch per email.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Welches Mock-Framwork?

  Alt 27. Nov 2020, 18:43
Kein Mensch der Welt kann ernsthaft etwas Schlechtes gegen Spring4D sagen.

Trotzdem, ich habe für meinen Teil nie verstanden wofür ich ein komplexes Mocking-Framework, meist mit elaboraten und wohlklingenden Fluent Interfaces, brauche. Ich komme mit dem TVirtualMethodInterceptor aus System.Rtti seit Jahren sehr schnell ans Ziel. Mir fehlt einfach die Phantasie was ein komplettes Framework hierfür mir bieten könnte, außer Dinge hinter wohlklingenden Abstraktionen zu verstecken in die man sich erst einarbeiten müsste.

tl;dr: Ich glaube nicht dass man für Mocking ein Mocking-Framework haben muss.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Welches Mock-Framwork?

  Alt 27. Nov 2020, 20:47
nie verstanden wofür ich ein komplexes Mocking-Framework brauche.
Vielleicht einfach deshalb, weil man ebend nicht händisch Callbacks für TVirtualInterface zusammen klöppeln möchte, wo man dann sein Behavior rein schreiben muss?

paymentServiceMock.Returns(success).When.Transfer(19.99, 'EUR') im Unittest kann wohl kaum an Les- und Wartbarkeit überboten werden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Welches Mock-Framwork?

  Alt 28. Nov 2020, 09:13
Wozu man ein komplexes Mocking-Framework braucht, habe ich auch nie verstanden. Wozu ich aber ein einfaches Mocking-Framework will weiss ich

Leider ist Delphi immer noch so rückständig und bietet nichts "out of the box". Das liegt wiederum leider daran, dass gefühlt 99% der der Delphi-Entwickler^wProgrammierer keine Ahnung haben wozu man den Mocks überhaupt braucht. ("wir machen keine unit tests, dafür haben wir keine Zeit." )

Darum umso mehr einen Riesen-Danke an Stevie für seinen Einsatz.

Zurück zu meinem Thema:

Ich habe einen Klasse die auf GetShellFolderPath aufsetzt und da einiges tut. Der unit^wIntegrations-Test dazu war recht unstabil wenn andere Programm auch in %appdata% rummachen. Deswegen wollte ich diesen unteren Teil mit wegkapseln und mit einem Mocks testen. Das habe ich geschafft. Ziel erreicht.

Was ich vermisste war eine (für mich zu findende) Einführung in das Framework also z.B sowas. Einführungen die erst erklären wozu man DI und Mocks braucht finde ich eher suboptimal.

(In der Firma wo ich arbeite haben wir ein eigenes Framework. Dort werden allerdings die Mocks als Sourcecode von einem Tool erzeugt.)

Geändert von freimatz (28. Nov 2020 um 15:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Welches Mock-Framwork?

  Alt 28. Nov 2020, 17:32
Was ich vermisste war eine (für mich zu findende) Einführung in das Framework also z.B sowas.
https://bitbucket.org/sglienke/sprin...ts.Mocking.pas
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Welches Mock-Framwork?

  Alt 28. Nov 2020, 18:31
Ich finde für Delphi gibt es kein richtig schlechtes Framework!

Ich arbeite viel mit den Delphi.Mocks und daher gibt es ein Video/Tutorial im Youtube Kanal "Coding Bott" dazu.

https://www.youtube.com/watch?v=BjMW4VW1UgA

Wenn du bereits Spring4D drin hast, würde ich immer versuchen keine weiteren Libs aufnehmen.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Welches Mock-Framwork?

  Alt 28. Nov 2020, 19:03
@Bernd: Das Beispiel in deinem Video bei 20:40 würde mit spring4d so ausschauen:

Delphi-Quellcode:
procedure Test;
var
  mo: Mock<IOperation>;
  ml: Mock<IOperationsListe>;
  op: IOperation;
begin
  mo.Setup.Returns(-1).When.Berechne(1, 2);
  ml.Setup.Returns(True).When.TryGetOperation(Arg = 'm', Arg.Ref(mo.Instance).Return);
  ml.Instance.TryGetOperation('m', op);
  Assert(op.Berechne(1, 2) = -1);
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz