收听ObservableObject上的更改(使用Travis CI)

时间:2020-06-20 21:25:51

标签: ios swift swiftui travis-ci combine

我有一个符合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)失败,因为count0而不是1。我无法弄清楚不同环境导致这种情况发生的任何原因。我可以使用错误版本的Combine,并且其行为已更改吗?还是会有某种环境变量会影响此行为?还是有其他方法可以监听object上发生的object.objectWillChange.sink {}上的更改?我无所适从地解释了它,因此任何帮助将不胜感激。

0 个答案:

没有答案