如何为使用 XCTEST 从 URL 加载的图像快速编写测试?

问题描述

我刚开始为我的代码编写测试用例,我想编写测试用例来测试是否从 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 (将#修改为@)