【发布时间】:2017-03-15 05:26:36
【问题描述】:
我创建了带有 RxDataSources 部分的 tableView。
视图控制器
viewModel.sectionsObservable
.bindTo(tableView.rx.items(dataSource: viewModel.dataSource))
.disposed(by: disposeBag)
sectionsObservable 在向数组添加新元素时发出事件。
我想测试一个正确的元素是否在正确的 indexPath 上。
func testGettingElementForIndexPath() {
let element = Element()
viewModel.addElement(element)
let fetchedElement = viewModel.getElement(at: IndexPath(row: 0, section: 0))
XCTAssertEqual(element, fetchedElement)
}
视图模型
func getElement(at indexPath: IndexPath) -> Element {
return self.dataSource.sectionModels[indexPath.section].items[indexPath.row]
}
它可以在应用程序中运行,但测试失败。致命错误:索引超出范围
这都是因为异步。如何测试这种情况?
编辑 1: 视图模型
let elementsVariable = Variable<[TaskData]>([])
func addElement(_ element: Element) {
elementsVariable.value.append(element)
}
var sectionsObservable: Observable<[Day]> {
return elementsVariable.asObservable().map { (elements) -> [MySection] in
...
}
}
【问题讨论】:
标签: testing tdd rx-swift rxdatasources