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.
Sie könnten versuchen, '.items = []' zum Zurücksetzen. – jtbandes
Danke! Wenn du als Antwort postest, akzeptiere ich. – mkirk