问题描述
我刚开始为我的代码编写测试用例,我想编写测试用例来测试是否从 URL 加载了正确的图像,并且还使用 XCTEST 在 swift 中实现了缓存。
测试代码
func loadImageUsingUrlString(urlString: String,completion: @escaping (UIImage)->()) {
imageUrlString = urlString
guard let url = URL(string: urlString) else { return }
image = nil
if let imageFromCache = imageCache.object(forKey: urlString as Nsstring) {
self.image = imageFromCache
return
}
URLSession.shared.dataTask(with: url,completionHandler: { (data,respones,error) in
if error != nil {
print(error ?? "")
return
}
dispatchQueue.main.async {
guard let imagetoCache = UIImage(data: data!) else { return }
if self.imageUrlString == urlString {
self.image = imagetoCache
}
imageCache.setobject(imagetoCache,forKey: urlString as Nsstring)
completion(self.image ?? UIImage())
}
}).resume()
}
我编写的测试的一部分
func test_DataimageLoadedFromHTTPSURL() {
let expected = expectation(description: "Image from https did load")
let viewer = CustomImageView(frame: CGRect(x: 0,y: 0,width: 300,height: 250))
viewer.loadImageUsingUrlString(urlString: self.sut.imageUrl,completion: {_ in
if viewer.image != nil {
expected.fulfill()
} else {
XCTFail()
}
})
waitForExpectations(timeout: 3.0,handler: nil)
}
但在这里我觉得测试并不完美,因为我们只测试是否为零,如果有人能以正确的方式指导我继续进行此测试,那就太好了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)