2016-04-20 25 views
1

XCTestを初めて使用し、テストケースの作成を開始しました。私は機能テストケースのカップルを書いているが、私は非同期メソッド呼び出しの下で立ち往生している。私はXCTestExpectationクラスのリファレンスを読んでいますが、正しくモックすることはできません。XCTestを使用した非同期メソッドテスト

以下のメソッドをテストする方法を知っていれば、本当に役に立ちます。ここで

- (void)getStudentInfo:(void (^)(BOOL))success failure:(void (^)(NSError *error))failure { 


    // Request formation CODE 
    // Here I have post call to AFNetworking 

    [httpSessionManager POST:uri 
    parameters:para 
     success:^(NSURLSessionDataTask *task, id responseObject) { 

     failure:^(NSURLSessionDataTask *task, NSError *error) { 
     }] 



    } 
+0

単体テストでの非同期テストのテクニックはありますが、一般的には、非同期プロセスと単体テストはよくマッチしません。 – ThomasW

答えて

3

あなたは非同期テストのためのサポートを提供XCTestの期待を検討する必要がある、私がテストしたい方法の詳細です。ここで(スウィフトに、同じ対物-Cに適用される)簡単な例である

func testAsync() { 

    let expectation = expectationWithDescription("Waiting for something") 

    let someObject = ... 
    someObject.doSomethingWithCompletion({() in 
      expectation.fulfill() 
     }) 

    waitForExpectationsWithTimeout(3.0, handler: nil) 

    // Verify Results 
} 

簡単な説明は、fulfil()メソッドが呼び出されるまで試験をwaitFor...で待機することです。またはタイムアウトしてエラーをスローします。

通知とプロパティの期待値を設定することもできます。詳細については、XCTestクラスのdocoを確認してください。

関連する問題