我正在为我的项目编写测试用例,这是混合了Objective C和Swift代码。我知道OCMock框架,我以前用它来模拟/存根编写Objective C测试用例。但我在谷歌上搜索,发现它并不完全支持Swift。因为它是基于ObjectiveC运行时的。2我正在尝试用swift语言编写测试用例。3有没有方法可以对服务层进行模拟/存根。4例如:
func getPersonData(id:String, success: (ReponseEnum) -> Void, failure: (error: NSError) -> Void) {
let requestPara:NSDictionary = ["id": id]
let manager: MyRequestManager = MyRequestManager.sharedManager()
//MyRequestManager is nothing but AFNetworking class
let jsonRequest
/// Service request creation code here
// Service Call
manager.POST(url, parameters: jsonRequest, success: { (task: NSURLSessionDataTask!, responseObject: AnyObject!) -> () in
// Some business logic
//success block call
success (successEnum)
}) {(task: NSURLSessionDataTask!, error: NSError!) -> () in
// failure block call
failure (failureEnum)
}
}
这里如何模拟post方法调用虚拟的responseObject以便我可以编写测试用例?
1条答案
按热度按时间p3rjfoxz1#
您需要使用依赖注入才能模拟
POST
方法。您的类(在其中定义了
getPersonData(id:success:failure)
方法)需要接受MyRequestManager作为构造函数中的参数:然后为请求管理器创建一个模拟:
在测试中,您使用mock初始化类:
您可以在此处找到有关依赖项注入的更多详细信息:http://martinfowler.com/articles/injection.html