当前位置:  开发笔记 > IOS > 正文

Swift单元测试-如何断言CGColor应该是什么?

如何解决《Swift单元测试-如何断言CGColor应该是什么?》经验,为你挑选了2个好方法。

使用Xcode V7.2。尝试进行单元测试时,需要验证是否设置了正确的颜色,并得到以下消息:

Cannot invoke 'XCTAssertEqual' with an argument list of type '(CGColor, CGColor)'

我如何断言CGColor应该是什么?



1> matt..:

使用XCTAssert并测试是否CGColorEqualToColor正确。



2> Ali Beadle..:

从Swift 3.0 / Xcode 8.0开始,CGColorEqualToColor也不再起作用,它导致错误“ CGColorEqualToColor不可用:请使用==”。

==或isEqual具有以下限制:

比较不同模型/空间中的颜色时(例如,#FFF与[UIColor whiteColor]),将返回NO [/ False]

(根据此答案),这可能不是您期望的行为。

这很麻烦,但是我将颜色分解为R / G / B / Alpha分量并进行比较,例如:

    var red1:CGFloat=0, green1:CGFloat=0, blue1:CGFloat=0, alpha1:CGFloat=0
    colour1.getRed(&red1, green:&green1, blue:&blue1, alpha:&alpha1)

    var red2:CGFloat=0, green2:CGFloat=0, blue2:CGFloat=0, alpha2:CGFloat=0
    colour2.getRed(&red2, green:&green2, blue:&blue2, alpha:&alpha2)

    XCTAssertEqual(red1, red2)
    XCTAssertEqual(green1, green2)
    XCTAssertEqual(blue1, blue2)
    XCTAssertEqual(alpha1, alpha2)

编辑:(将此添加到您的答案,而不是创建一个新的答案:)

这是一个UIColor扩展,更易于使用:

import UIKit

extension UIColor {
    func isEqualTo(_ color: UIColor) -> Bool {
        var red1: CGFloat = 0, green1: CGFloat = 0, blue1: CGFloat = 0, alpha1: CGFloat = 0
        getRed(&red1, green:&green1, blue:&blue1, alpha:&alpha1)

        var red2: CGFloat = 0, green2: CGFloat = 0, blue2: CGFloat = 0, alpha2: CGFloat = 0
        color.getRed(&red2, green:&green2, blue:&blue2, alpha:&alpha2)

        return red1 == red2 && green1 == green2 && blue1 == blue2 && alpha1 == alpha2
    }
}

并像这样使用它:

XCTAssertTrue(cell.backgroundColor!.isEqualTo(.clear))

或-您可以使用Equatable函数

func ==(lhs: UIColor, rhs: UIColor) -> Bool {
    var lr: CGFloat = 0, lg: CGFloat = 0, lb: CGFloat = 0, la: CGFloat = 0
    lhs.getRed(&lr, green:&lg, blue:&lb, alpha:&la)
    var rr: CGFloat = 0, rg: CGFloat = 0, rb: CGFloat = 0, ra: CGFloat = 0
    rhs.getRed(&rr, green: &rg, blue: &rb, alpha: &ra)
    return lr == rr && lg == rg && lb == rb && la == ra
}

并像这样使用它:

XCTAssertTrue(cell.backgroundColor == UIColor.clear)

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有