LoginSignup
0
1

More than 5 years have passed since last update.

テスト用の画像をネットワークから読み出さないようにする。

Last updated at Posted at 2018-12-01

はじめに

組織にテストを書く文化を根付かせる戦略と戦術にある通り、ユニットテストは最低限、再現性と繰り返し性を追求する必要があります。

サーバー(=ネットワーク)につなぐ処理はそれを阻害する要因なので、スタブやモックを使って断ち切る必要があります。

Rest APIをスタブする方法が色々出回っているのでここで述べません。

一方、テスト画像をスタブするにはどうすれば良いでしょうか? わざわざスタブを書く? いえ、画像キャッシュライブラリの機能を使えば書かなくて済みます!

実際のコード例

実際のコードはこんな感じになります。SDWebImage限定です。XCTestCaseクラスのSetUpメソッド辺りで呼びましょう。


   let cache = SDImageCache.shared()
        cache?.maxCacheSize = 50 * 1024 * 1024
        for name in ["item_1", "item_2", "item_3", "item_4", "item_5", "item_6"] {
            let url = Bundle(for: type(of: self)).url(forResource: name, withExtension: "png")
            let data = try! Data(contentsOf:url!)
            cache?.removeImage(forKey:  "https://hogehoge.com/" + name)
            cache?.store(UIImage(data: data), forKey:  "https://hogehoge.com/" + name)
        }

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1