问题描述
我想要的是searchResultsController是可见的,即使搜索查询为空。我通过将searchResultsController的视图设置为在updateSearchResults(for searchController: UISearchController)
方法中不隐藏来实现。它工作正常,但XCTest框架无法找到searchResultsController的内容。
这是带有searchBar的主UIViewController的代码(通过Storyboard嵌入在UINavigationController中):
class ViewController: UIViewController,UISearchResultsUpdating {
private let searchController = UISearchController(searchResultsController: SearchResultsViewController())
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchResultsUpdater = self
navigationItem.searchController = searchController
}
// MARK: - UISearchResultsUpdating
func updateSearchResults(for searchController: UISearchController) {
// Make results visible even if search query is empty
searchController.searchResultsController?.view.isHidden = false
}
}
这是SearchResultsViewController的代码,仅显示标签:
final class SearchResultsViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "search"
view.addSubview(label)
label.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.centerXAnchor),label.centerYAnchor.constraint(equalTo: view.centerYAnchor)
])
}
}
最后,UI测试自身(成功完成):
class SearchUiTestingUITests: XCTestCase {
func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()
let searchField = app.searchFields.firstMatch
searchField.tap()
// failing to find the label,but it's there
XCTAssertFalse(app.staticTexts["search"].exists)
searchField.typeText("1")
// Now it finds it
XCTAssert(app.staticTexts["search"].exists)
}
}
What it looks like running this test
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)