我有一个符合ObservableObject
的类,出于测试目的,我想在对象更改时进行监听。但是,我遇到了一个问题。这是我能够重现此问题的最小片段:
import Combine
import XCTest
class FooTests: XCTestCase {
func testListen() {
let object = Foo()
var count = 0
let sub = object.objectWillChange.sink {
count += 1
}
object.objectWillChange.send()
XCTAssertEqual(count, 1)
sub.cancel()
}
}
fileprivate final class Foo: ObservableObject {}
当我在本地运行此测试时,它可以通过。但是,它在我的CI服务器上运行时(我正在使用Travis CI)失败,因为count
是0
而不是1
。我无法弄清楚不同环境导致这种情况发生的任何原因。我可以使用错误版本的Combine,并且其行为已更改吗?还是会有某种环境变量会影响此行为?还是有其他方法可以监听object
上发生的object.objectWillChange.sink {}
上的更改?我无所适从地解释了它,因此任何帮助将不胜感激。