在测试NSLayoutConstraint
项时,此行不会编译:
XCTAssertEqual(firstItem, view1)
错误:无法调用' XCTAssertEqual'使用类型'(AnyObject,AnyObject)'
的参数列表
为了让它在没有错误或警告的情况下进行编译,我必须这样做:
XCTAssertEqual(firstItem as? UIView, view1 as? UIView)
但是,我不知道firstItem
或view1
是UIView
还是UILayoutSupport
等等。
那么,有没有通用的方法来测试它?
对于上下文,我在我编写的测试助手方法中执行此操作:
extension NSLayoutConstraint {
func assert(item view1: AnyObject, toItem view2: AnyObject? = nil, attribute attr1: NSLayoutAttribute, relatedBy relation: NSLayoutRelation = .Equal, attribute attr2: NSLayoutAttribute? = nil, multiplier: CGFloat = 1, constant c: CGFloat = 0) {
let attribute2: NSLayoutAttribute = view2 == nil ? .NotAnAttribute : (attr2 ?? attr1)
XCTAssertEqual(firstItem as? UIView, view1 as? UIView)
XCTAssertEqual(firstAttribute, attr1)
XCTAssertEqual(self.relation, relation)
XCTAssertEqual(secondItem as? UIView, view2 as? UIView)
XCTAssertEqual(secondAttribute, attribute2)
XCTAssertEqual(self.multiplier, multiplier)
XCTAssertEqual(constant, c)
}
}
答案 0 :(得分:-1)
尝试XCTAssertTrue(firstItem === view1)
。