UnitTest

XCTAssertEqual

スカラ型の比較。同値の場合、OK

func testAA() throws {
   XCTAssertEqual(1, 1)     // OK
   XCTAssertEqual("a", "a") // OK

   XCTAssertEqual("a", "")  // NG XCTAssertEqual failed: ("a") is not equal to ("")
   XCTAssertEqual("a", "", "間違ってます")  
   // NG XCTAssertEqual failed: ("a") is not equal to ("") - 間違ってます
}

XCTAssertNotEqual

スカラ型の比較。同値の場合、NG

func testAA() throws {
   let a: Int = 1
   let b: Int = 2
   XCTAssertNotEqual(a, b) // OK

   XCTAssertNotEqual(1, 1, "同じ値は失敗") 
   // NG XCTAssertNotEqual failed: ("1") is equal to ("1") - 同じ値は失敗
}

XCTAssertIdentical

AnyObjectに準拠する値の比較

func testAA() throws {
   let a = NSDate(timeIntervalSince1970: 10)
   let b = NSDate(timeIntervalSince1970: 10)
   XCTAssertIdentical(a, b) // OK
}

XCTAssert

bool値でエラーを判定

func testAA() throws {
   XCTAssert(true)  // OK

   let a = false    
   XCTAssert(a, "falseは失敗")  // NG XCTAssertTrue failed - falseは失敗

XCTFail

アサートを発行。期待しないルートを通った時などに使う

XCTFail("このルートはエラー") // NG "failed - このルートはエラー"

非同期のテスト

XCTestExpectation:要件発行

wait:要件が満たされるまで待つ

fullfillメソッド:要件が満たされた場合に実行

// XCTestExpectationインスタンス生成
let expectation = XCTestExpectation(description: "testAA")

let cancellable = call(URLRequest(url: urlComponents.url!))
        .sink(receiveCompletion: { completion in
            switch completion {
            // 失敗
            case .failure(let error):
                print(error.localizedDescription)
                  
            // 成功
            case .finished:
               // 非同期処理が正常完了(XCTestExpectationの要件が満たされた)
               expectation.fulfill()
            }
            
        }, receiveValue: { Data in
            data = Data
        })
            
    // 10秒以内に処理が完了するのを待つ
    wait(for: [expectation], timeout: 10)
タイトルとURLをコピーしました