gpt4 book ai didi

testing - RxDataSources 测试

转载 作者:行者123 更新时间:2023-11-28 20:52:01 25 4
gpt4 key购买 nike

我已经通过 RxDataSources 创建了带有部分的 tableView。

View Controller

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)
}

View 模型

func getElement(at indexPath: IndexPath) -> Element {
return self.dataSource.sectionModels[indexPath.section].items[indexPath.row]
}

它在应用程序中有效,但测试失败。 fatal error :索引超出范围

都是因为那个异步。如何测试这个案例?


编辑 1: View 模型

let elementsVariable = Variable<[TaskData]>([])
func addElement(_ element: Element) {
elementsVariable.value.append(element)
}

var sectionsObservable: Observable<[Day]> {
return elementsVariable.asObservable().map { (elements) -> [MySection] in
...
}
}

最佳答案

如果您说生产代码工作正常,那一定是犯了一些愚蠢的错误。

在生产代码中你有:

.bindTo(tableView.rx.items(dataSource: viewModel.dataSource))

在数据源内部设置项目

检查你的测试代码中是否也有它

关于testing - RxDataSources 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42793796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com