【发布时间】:2015-11-06 19:43:04
【问题描述】:
在 XCTest 中,您可以在需要它的测试函数中定义模拟对象。就像这样
func testFunction(){
class mockClass: AnyObject{
func aFunction(){
}
}
}
我正在尝试使用这些模拟对象来测试另一个函数是否在给定特定条件下发出正确的通知(在我的例子中,成功通知是用 204 状态代码广播到一个对象的。
我遇到的问题是,即使 deletedSuccess() 函数显然存在,我也会收到“无法识别的选择器”运行时错误/
这里有一些代码转储
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)
})
}
使用像这样的模拟对象和选择器有什么我不知道的问题吗?
【问题讨论】:
标签: ios unit-testing xctest xctestexpectation