3 Stimmen

Gibt es irgendwelche Test-Spy-Bibliotheken für Objective-C?

Ich möchte einen BDD-Ansatz für Unit-Tests in einem iOS-Projekt verwenden, und ich habe gerade festgestellt, dass es möglicherweise keine bestehende Bibliothek gibt, die Testdoubles der Testspion Vielfalt. Idealerweise suche ich nach etwas Ähnlichem wie Mockito , Jasmin , oder RR .

Bevor ich losziehe und eine Woche Freizeit damit verbringe, eine Testspionage-Bibliothek zu schreiben, dachte ich, ich stelle die Frage zuerst hier auf SO.

Bislang habe ich mir Folgendes angesehen OCMock y Kiwi aber sie scheinen beide der traditionellen standardmäßig hoch spezifizierte Mocking-Frameworks die erfordern, dass Erwartungsaussagen in der Vorbereitungsphase, vor der Handlungsphase . Offensichtlich behindert dies meine Vorstellung von Schönheit, DRY , verschachtelte Spezifikationen (die ich entweder in Kiwi o Zedernholz ).

2voto

Allen Ding Punkte 1353

Ich habe das gerade gesehen.

Kiwi macht das jetzt definitiv nicht. Sie haben Recht, dass die darin enthaltenen Mocks für eine "Standard"-Arrangement vor der Handlungsphase erstellt werden.

Auf den ersten Blick sieht es so aus, als ob das Hinzufügen der Grundlagen für die Spionagefunktionalität keine allzu große Überarbeitung erfordern würde. Jede Nachricht (abgesehen von einigen für die Implementierung wichtigen, reservierten Selektoren), die zu einem Mock gelangt, durchläuft -[KWMock forwardInvocation:] .

Im Wesentlichen ist die derzeitige -[KWMock forwardInvocation:] müsste dahingehend geändert werden, dass alle Aufrufe, die es durchlaufen, aufgezeichnet/kopiert werden, anstatt wie jetzt. Dies wäre die primitive Funktionalität, die eine spätere Überprüfung der Erwartungen durch Abfrage der aufgezeichneten Aufrufe ermöglichen würde. Natürlich ist es auch nicht trivial, eine gut lesbare Form für die Überprüfung zu finden.

Der Spion/die Attrappe müsste immer noch wissen, für welche Klasse/welches Protokoll er/sie im Voraus steht. Dadurch ist er in der Lage, gültige Methodensignaturen für Selektoren von an ihn gesendeten Nachrichten zu generieren, die es der Laufzeit-Weiterleitungsmaschinerie ermöglichen, die tatsächliche NSInvocation zu erzeugen, die weitergeleitet wird.

Ich bin im Moment mit anderen Dingen beschäftigt, um eine Implementierung hinzubekommen, aber ich bin gerne bereit, weitere Fragen zu beantworten oder Pull Requests zusammenzuführen. HTH.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X