3

Swift を使用した XCTest では、必要なテスト関数でモック オブジェクトを定義できます。

func testFunction(){
    class mockClass: AnyObject{
        func aFunction(){
        }
    }
}

これらのモック オブジェクトを使用して、別の関数が特定の条件で正しい通知を送信することをテストしようとしています (私の場合、成功通知は 204 ステータス コードでオブジェクトにブロードキャストされます。

私が抱えている問題は、deletedSuccess()関数が明らかにそこにあるにもかかわらず、「認識されないセレクター」ランタイムエラーが発生することです/

Heresいくつかのコードダンプ

func testDelete(){
    let expectation = expectationWithDescription("Post was deleted")

    class MockReciever : AnyObject {
        func deleteSuccess(){
            println("delete successfull")
            expectation.fulfill()
        }
    }

    let mockReciever = MockReciever()
    NSNotificationCenter.defaultCenter().addObserver(mockReciever, selector: "deleteSuccess", name: PostDeletedNotification, object: post)
    let response = NSHTTPURLResponse(URL: NSURL(), statusCode: 204, HTTPVersion: nil, headerFields: nil)
    let request = NSURLRequest()
    post.deleteCompletion(request, response: response, data: nil, error: nil)

    waitForExpectationsWithTimeout(30, handler: { (error) -> Void in
        if error != nil{
            XCTFail("Did not recieve success notification")
        } else {
            XCTAssertTrue(true, "post deleted successfully")
        }
        NSNotificationCenter.defaultCenter().removeObserver(mockReciever)
    })
}

このようなモック オブジェクトとセレクターを使用する際に、私が知らない何らかの問題がありますか?

4

1 に答える 1