Я использую Quick, Nimble и RxSwift.
Моя цель - написать модульный тест, который проверяет некоторую функцию с таймером, которая будет выполняться повторно через некоторый интервал времени.
Мой псевдокласс
final class TestingTimerClass {
let counter: BehaviorRelay<Int> = BehaviorRelay<Int>(value: 0)
private var timer: Timer?
....
func startTimer() {
timer = Timer.scheduledTimer(
timeInterval: 8,
target: self as Any,
selector: #selector(self.executeFunction),
userInfo: nil,
repeats: true
)
}
@objc private func executeFunction() {
let currentValue = counter.value
counter.accept(currentValue + 1)
}
}
Мой тестовый класс
class TestingTimerClass: QuickSpec {
override func spec() {
var testingClass: TestingTimerClass!
describe("executing") {
context("startTimer()") {
beforeEach {
testingClass = TestingTimerClass()
}
afterEach {
testingClass = nil
}
it("should update counter value after a period of time") {
testingClass.startTimer()
expect(testingClass.counter.value).toEventually(equal(1), timeout: TimeInterval(9), pollInterval: TimeInterval(2), description: nil)
}
}
}
}
}
Я ожидаю, что executeFunction()
будет вызван через 8 секунд, однако он никогда не вызывается, и мой тестовый набор не выполнен.
Есть идеи, что пошло не так?
testingClass.counter.toBlocking().first()
использоватьRxBlocking
для синхронного преобразования асинхронных событий - person Sandeep Bhandari   schedule 14.05.2020