2016-03-18 23 views
1

Ich schreibe einen Test, um eine Funktion zu verifizieren, die ein Bild auf die Zwischenablage kopiert.Testen, dass ein bestimmtes Bild in die Zwischenablage kopiert wurde

Hier ist der Test, wie ich es zu schreiben, würde es vorziehen:

// reset the paste board 
UIPasteboard.generalPasteboard.image = nil; //<-- this explodes 
XCTAssertNil(UIPasteboard.generalPasteboard.image); 

// Grab some random existing image 
UIImage *image = [UIImage imageNamed:@"some-image"]; 
MJKMyClass *myInstance = [[myInstance alloc] initWithImage:image]; 
[myInstance doSomethingThatCopiesImageToPasteboard] 

XCTAssertNotNil(UIPasteboard.generalPasteboard.image); 

Dies schlägt mit:

failed: caught "NSInvalidArgumentException", "-[UIPasteboard setImage:]: Argument is not an object of type UIImage [(null)]" 

was überraschend ist, weil nach dem UIPasteboard Header, Bild ist ein nullable Feld.

Ich nehme an, dies bedeutet, dass sie eine Laufzeitprüfung für das Argument durchführen, obwohl es nullfähig ist.

Dinge, die ich habe versucht:

  • Objekte von id Vergleich funktioniert nicht, weil UIImage die durch die generalPastboard.image kopiert werden (jedes Mal, wenn Sie anrufen UIPasteboard.generalPasteboard.image können Sie eine andere Instanz)
  • Vergleichen mit PNG-Darstellung könnte funktionieren, scheint aber gnarly.
  • Vergleichen nach Bildgröße war bisher meine engste Wette, scheint aber auch Kreisverkehr.
+1

Sie könnten versuchen, '.items = []' zum Zurücksetzen. – jtbandes

+0

Danke! Wenn du als Antwort postest, akzeptiere ich. – mkirk

Antwort