【问题标题】:Swift Unit Testing: Checking for equality of two objects of the same classSwift 单元测试:检查同一类的两个对象是否相等
【发布时间】:2019-02-20 03:28:25
【问题描述】:

您将如何创建一个测试函数来比较同一类的两个对象的内容?

背景: 我有一个从 CSV 文件中提取数据并使用该数据创建对象的函数。我想知道这个函数是否生成了正确的输出。

【问题讨论】:

    标签: ios swift xcode unit-testing testing


    【解决方案1】:

    查看 Equatable 协议。例如

    extension MyClass: Equatable
    {
      static func ==(lhs: MyClass, rhs: MyClass) -> Bool
      {
        return (lhs.property1 == rhs.property1) && (lhs.allData == rhs.allData)
      }
    }
    

    【讨论】:

    • 哦,我明白了。所以我需要创建一个逻辑检查来比较每个成员变量?
    • 是的。根据您的类定义,这可能需要比较成员的内容以及成员的值(查找深度比较或深度相等)。例如。如果我的示例中的 allData 是另一个类,您可能需要进一步实现 Equatable 实现。
    • 谢谢你,我会调查你提到的话题。
    【解决方案2】:

    您是否只是想检查类类型,如下所示?类似于[custom isKindOfClass: MyClass]

    guard customClass is MyClass else {
            XCTFail("FAILURE ")
            return 
        }
    

    编辑:

    比较两个自定义对象 check this 的内容。实现自定义 equatable 方法后,使用以下语句检查单元测试。

    XCTAssert(object1 == object2)
    

    【讨论】:

    • OP 要求compare the contents of two objects of the same class。
    • === 运算符检查对象的引用而不是内容。
    • 我的意思是,您需要使用提供的链接(static func ==(lhs:rhs)-> Bool)比较内容,然后在单元测试中使用== 进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2021-03-06
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    相关资源
    最近更新 更多