gpt4 book ai didi

ios - 使用 Realm addNotificationBlock 的测试代码

转载 作者:可可西里 更新时间:2023-11-01 01:28:07 25 4
gpt4 key购买 nike

有没有办法配置 Realm 以便同步触发通知回调(使用 addNotificationBlock 注册)?特别是,我希望在测试中出现这种行为。

由于回调是异步的,因此不能在测试中使用。因此,有必要在生产环境中注入(inject)一个包装通知注册的依赖项,而不是在测试中注入(inject)一个模拟行为的依赖项。

但这不是一个很好的解决方案,因为它 a) 需要更多的代码,并且 b) 该代码正在对 Realm 做出假设,例如如何构造一个 RealmCollectionChange

如果不能让它同步触发,也许有人建议有更好的方法来测试依赖于 RealmCollectionChange 的代码?

最佳答案

您可以使用 expectation(description:)waitForExpectations(timeout:handler:) 来测试异步方法,如下所示。

func test() {
let q = DispatchQueue(label: "Q")

q.async {
let realm = try! Realm()
try! realm.write {
realm.add(TestObj())
}
}

let e = expectation(description: "Notification fired")

let realm = try! Realm()
let token = realm.addNotificationBlock { (notification, realm) in
print("notification block")
e.fulfill()
}

waitForExpectations(timeout: 2.0, handler: nil)
token.stop()
}

关于ios - 使用 Realm addNotificationBlock 的测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com