通过 "identical to" 灵活匹配结构
Nimble matching of struct via "identical to"
我在单元测试期望映射中使用 nimble,并且有一个关于比较结构的问题。
我观察到的是匹配的 .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 个副本?为什么该测试失败?
be()
函数实际上调用了beIdenticalTo
,它使用了指针相等性检查,所以它只对引用类型有效。见 BeIdenticalTo source code.
你应该让 Struct
符合 Equatable
并使用 equal
代替。
func someTest() {
struct Struct: Equatable {
let a: String
let b: String
}
let structure = Struct(a: "a", b: "b")
expect(structure).to(equal(structure))
}
我在单元测试期望映射中使用 nimble,并且有一个关于比较结构的问题。
我观察到的是匹配的 .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 个副本?为什么该测试失败?
be()
函数实际上调用了beIdenticalTo
,它使用了指针相等性检查,所以它只对引用类型有效。见 BeIdenticalTo source code.
你应该让 Struct
符合 Equatable
并使用 equal
代替。
func someTest() {
struct Struct: Equatable {
let a: String
let b: String
}
let structure = Struct(a: "a", b: "b")
expect(structure).to(equal(structure))
}