6

tableView:cellForRowAtIndexPath:ビュー コントローラーでデリゲート メソッドの単体テストを書いているとします。このメソッドは、渡すインデックス パスに応じて、いくつかの異なる構成のセルを返す可能性があります。

プロパティで簡単にアサートできcell.textLabel.textます。cell.imageView.imageしかし、プロパティに正しい画像が含まれていると断言するにはどうすればよいでしょうか? 画像にも imageView にも、画像名またはファイル名を見つけるために使用できる (パブリック API) プロパティはありません。

私が思いついた最善の方法は、可能な限り最小の有効な.png[UIImage imageWithData:]を作成し(ユニットテストでディスクに触れないように使用します)、取得したバイト配列cell.imageView.imageが期待どおりであることをアサートすることです。これを少し改善するためにOCHamcrest マッチャーを作成しましたが、これは不十分で柔軟性のないアプローチです。

誰かがより良いアイデアを持っていますか?

4

4 に答える 4

0

画像をデータに変換してから、データを比較します。画像は単なるメモリ位置へのポインタであるため。

guard let data1 = image1?.pngData(), let data2 = image2.pngData() else {
    XCTFail("Data should not be nil")
    return
}
XCTAssertEqual(data1, data2)

スイフト5

于 2021-01-13T14:53:25.460 に答える