情報系人間のブログ

プログラミング、開発に関することを書いていきます。

Quickでテストする

Swiftのテストフレームワークとして有名なQuickを使ってみます。

インストール

Carthageに

github "Quick/Nimble"
github "Quick/Quick"

を記述し

carthage update

でインストールできます。CocoaPods,Git submodulesでもインストール可能です。 NimbleはMatcherでQuickで使われています。

テストを書いてみる

簡単な例ですが、こちらのようにRSpec風に書くことができます。

describe("sample"){
    it("1 + 1 = 2"){
        expect(1+1).to(equal(2))
    }
}

非同期処理をテストする場合は以下のように書きます。

describe("API TEST") {
    it("search swift"){
        var isSuccess = false
        
        APIClient.search("swift"){result in
            switch result {
            case .Success:
                isSuccess = true
            case .Error:
                break
            }
        }
        
        expect(isSuccess).toEventually(beTrue(), timeout: 5, pollInterval: 1, description: "")
    }
}

toEventuallyを使用することでタイムアウト時間、pollingの間隔を指定できます。 またwaitUntilを使用する方法もあります。wailUntilはデフォルトのタイムアウト時間が1秒になっています。

 it("search swift2"){
     var isSuccess = false
     
     waitUntil{ done in
         APIClient.search("swift"){result in
             switch result {
             case .Success:
                 isSuccess = true
             case .Error:
                 break
             }
             expect(isSuccess).to(beTrue())
             done()
         }
     }
 }