首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxDataSources测试

RxDataSources测试
EN

Stack Overflow用户
提问于 2017-03-14 18:27:54
回答 1查看 425关注 0票数 1

我创建了tableView,其中包含了RxDataSources的部分。

ViewController

代码语言:javascript
复制
viewModel.sectionsObservable
        .bindTo(tableView.rx.items(dataSource: viewModel.dataSource))
        .disposed(by: disposeBag)

当向数组中添加新元素时,sectionsObservable会发出该事件。

我想测试一个正确的元素是否在正确的indexPath上。

代码语言:javascript
复制
func testGettingElementForIndexPath() {
    let element = Element()
    viewModel.addElement(element)
    let fetchedElement = viewModel.getElement(at: IndexPath(row: 0, section: 0))
    XCTAssertEqual(element, fetchedElement)
}

ViewModel

代码语言:javascript
复制
func getElement(at indexPath: IndexPath) -> Element {
    return self.dataSource.sectionModels[indexPath.section].items[indexPath.row]
}

它在应用程序中工作,但是测试失败。致命错误:超出范围的索引

这都是因为那个异步的。如何检验这个案子?

编辑1: ViewModel

代码语言:javascript
复制
let elementsVariable = Variable<[TaskData]>([])
func addElement(_ element: Element) {
    elementsVariable.value.append(element)
}

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

回答 1

Stack Overflow用户

发布于 2017-03-14 21:26:36

如果你说生产代码工作正常,那肯定是个愚蠢的错误。

在生产代码中有:

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

在内部设置dataSource内的项

检查它是否也包含在测试代码中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42793796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档