У меня есть класс, соответствующий 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 {}
, который будет работать? Я не в силах объяснить это, поэтому буду благодарен за любую помощь.