0

我在单元测试期望映射中使用灵活,并且有一个关于比较结构的问题。

我观察到的是 match.to(be(x))根本不适用于结构。因此,以下单元测试失败:

func someTest() {
    struct Struct {
        let a: String
        let b: String
    }
    let structure = Struct(a: "a", b: "b")
    expect(structure).to(be(structure))
}

这是否意味着写时复制机制在这里启动并且我们正在查看 2 个副本?为什么那个测试失败了?

4

1 回答 1

2

be()函数实际调用beIdenticalTo,它使用指针相等检查,因此它仅适用于引用类型。请参阅BeIdenticalTo 源代码

你应该使Struct符合Equatableequal改为使用。

func someTest() {
    struct Struct: Equatable {
        let a: String
        let b: String
    }
    let structure = Struct(a: "a", b: "b")
    expect(structure).to(equal(structure))
}
于 2020-06-26T11:10:33.240 回答