У меня есть следующий класс, я хочу проверить, что если объект подписан на опубликованное свойство "elapsedTime", он будет получать обновления при каждом изменении свойства.
class SampleSegmentTimer {
@Published var elapsedTime: DateComponents?
private var subs = Set<AnyCancellable>()
func start(tickingEvery interval: TimeInterval = 1) {
Timer.publish(every: interval, on: .main, in: .common)
.autoconnect()
.map(transform)
.assign(to: \.elapsedTime, on: self)
.store(in: &subs)
}
private func transform(_ date: Date) -> DateComponents {
// do some calculation
DateComponents()
}
}
Я хочу написать тест, как следующее:
func testStart() {
// Given
let segmentTimer = SampleSegmentTimer()
var elapsedTimes = [DateComponents?]()
let elapsedTimeSub = segmentTimer.$elapsedTime.sink { elapsedTimes.append($0) }
// When
segmentTimer.start(tickEvery: 1) // I want to wait 3 seconds to let it tick 3 times
// Then
XCTAssertEqual(elapsedTimes.count, 3)
}