我对集合视图进行了测试,其工作原理如下:
func testDeleteItem() {
app.collectionViews.staticTexts["Item"].tap()
app.buttons["Delete"].tap()
XCTAssertEqual(app.collectionViews.cells.count, 2)
XCTAssertFalse(app.collectionViews.cells.staticTexts["Item"].exists)
}
点击后,会出现一个带有删除按钮的新屏幕。点击按钮时,屏幕会自行关闭并重新加载集合视图。用户界面中的一切都按预期进行,但我的两个断言都失败了。在第一个计数中它仍然是 3,在第二个计数中它仍然存在。
我已经找到了解决方案,但它是错误 API 行为的解决方法。集合视图正在缓存单元格,这可能就是为什么我有 3 个单元格的原因,即使我已经删除了一个单元格。删除的单元格在屏幕外,因此您可以测试它是否在屏幕外hittable
:
XCTAssertFalse(app.cells.staticTexts["Item"].hittable)
为了查找计数,我创建了扩展:
extension XCUIElementQuery {
var countForHittables: UInt {
return UInt(allElementsBoundByIndex.filter { $0.hittable }.count)
}
}
我的测试如下所示:
func testDeleteItem() {
app.collectionViews.staticTexts["Item"].tap()
app.buttons["Delete"].tap()
XCTAssertEqual(app.collectionViews.cells.countForHittables, 2)
XCTAssertFalse(app.collectionViews.cells.staticTexts["Item"].hittable)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)