У меня есть привязка ControlProperty, как это в моем UIViewController:
textView.rx.text.orEmpty.asObservable()
.bind(to: viewModel.descriptions)
.disposed(by: disposeBag)
, где viewModel.descriptions
имеет тип BehaviorRelay<String>
.
В подходе TDD я хотел бынаписать (изначально неудачный) тест (как начальный этап цикла красный-зеленый-рефакторинг), чтобы увидеть, что эта привязка существует.Я пытался с тестовым кодом, подобным этому:
sut.textView.insertText("DESC")
sut.textView.delegate?.textViewDidChange?(sut.textView)
expect(mockViewModel.lastDescriptions).to(equal("DESC"))
, где sut
- мой ViewController, а mockViewModel
содержит код для подписки на descriptions
BehaviorRelay
:
class MockViewModel: MyViewModelProtocol {
var descriptions = BehaviorRelay<String>(value: "")
var lastDescriptions: String?
private var disposeBag = DisposeBag()
init() {
descriptions.asObservable()
.skip(1)
.subscribe(onNext: { [weak self] (title: String) in
self?.lastDescriptions = title
})
.disposed(by: disposeBag)
}
}
Однако я не могу выдвинуть новое значение в textView
, чтобы descriptions
BehaviorRelay
его получило.
Как я могу достичь descriptions.asObservable()
для стрельбы при вводе значения в textView
?Если бы это было UITextField
, то я бы сделал:
textField.text = "DESC"
textField.sendActions((for: .editingChanged))
Заранее спасибо за любую помощь.