LoginSignup
1
2

More than 1 year has passed since last update.

【Swift】Quickを使用したテスト記述

Last updated at Posted at 2022-07-09

パッケージ導入

swift
"Quick/Quick"
"Quick/Nimble"

こちら参考記事

テストコードを書く

swift
import Quick
import Nimble

@testable import <プロジェクト名>

class LoginSpec: QuickSpec {
    override func spec() {
        describe("ログインする") {
            beforeSuite {
                // 全てのテストが始まる前に実行する処理
            }
            beforeEach {
                // itが始まる前に毎回実行する処理 
            }
            afterEach {
                // itが終わった後に毎回実行する処理 
            }
            afterSuite {
                // 全てのテストが終わった後に実行する処理
            }
            context("ログインが成功した場合") {
                it("正常系") {
                    expect(<処理等>).to(equal(<比較したい値>))
                }
            }
                        context("ログインが失敗した場合") {
                it("異常系") {
                    expect(<処理等>).to(equal(<比較したい値>))
                }
            }
        }
    }
}

QuickSpec

Quickの基本形でクラスは、QuickSpecを継承してspec()メソッドの中にテストケースを記載できる

beforeSuite、beforeEach、afterEach、afterSuite

・beforeSuite
  全てのテストが始まる前に行う
・beforeEach
  itが始まる前に行う
・afterEach
  itの後に行う
・afterSuite
  全てのテストが終わった時に行う

describe、context、it

・describe
  何のテストを行うか
・context
  どの条件でテストを行うか
・it
  結果はどうなるのか z

expect

評価対象の評価にはequal()以外にも幾つかある

swift
// AAA  BBB であること
expect(AAA).to(equal(BBB))

// AAA  BBB でないこと
expect(AAA).toNot(equal(BBB))

// AAA  True であること
expect(AAA).to(beTrue())

// AAA  True ではないこと
expect(AAA).toNot(beTrue())
または
expect(AAA).notTo(beTrue())

// AAA が非同期でTrue になること(デフォルトでは1秒待ちます)
expect(AAA).toEventually(beTrue())

// AAA が非同期でTrue 以外になること
expect(AAA).toEventuallyNot(beTrue())
または
expect(AAA).toNotEventually(beTrue())

// AAA 1以上であること
expect(AAA).to(beGreaterThanOrEqualTo(1))

// AAA  Hoge クラスのインスタンスであること
expect(AAA).to(beAnInstanceOf(Hoge.self))

// AAA  Hoge クラスもしくはその子クラスのインスタンスであること
expect(AAA).to(beAKindOf(Hoge.self))

// AAA 1.0のプラスマイナス0.2の範囲内の値であること
expect(AAA).to(beCloseTo(1.0, within: 0.2))
1
2
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
1
2