8

XCTestExpectation を使用して非同期呼び出しをテストしています。

次のコードは、指定された 1 秒のタイムアウトの前に completionHandler が実行されると機能します (テストは成功します)。

func test__async_call() {
        // prepare
        let sut = ClassToTest()
        let expectation: XCTestExpectation = self.expectationWithDescription(nil)

        // test
        sut.methodToTestWithCompletionHandler() { () -> () in
            expectation.fulfill()
        }

        // verify
        self.waitForExpectationsWithTimeout(1, handler: nil)
    }

ただし、completionHandler が呼び出されず、期待が満たされない場合、waitForExpectationsWithTimeout を呼び出したときにテストが失敗する代わりに、EXC_BAD_ACCESS が返されます。これは、テスト スイート全体の結果を確認することが不可能になるため、あまり便利ではありません。

これを回避し、通常のテストの失敗を得るにはどうすればよいですか?

4

1 に答える 1

4

EXC_BAD_ACCESS の原因は、期待値の作成時に nil 記述を渡しているようです。

この呼び出しに任意の文字列を渡すと機能し、期待が満たされない場合、予期されたテストの失敗が発生します。

let expectation: XCTestExpectation = self.expectationWithDescription("...")
于 2014-12-21T15:31:20.900 に答える