iOS 单元测试:如何对 firstResponderStatus 进行单元测试
Posted
技术标签:
【中文标题】iOS 单元测试:如何对 firstResponderStatus 进行单元测试【英文标题】:iOS unit test: How to unit test firstResponderStatus 【发布时间】:2015-08-12 05:26:05 【问题描述】:我正在编写一个测试来确认方法是否将焦点转移到下一个文本字段。我尝试了ios unit test: How to set/update/examine firstResponder? 的代码。但它失败了。
- (void)testFocusMovedToYearField
UIWindow *window = [[UIWindow alloc] init];
[window addSubview:self.dateCell.txtDay];
[window addSubview:self.dateCell.txtYear];
[self.dateCell completionBlockHelper];
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:5.0]];
XCTAssertTrue([self.kioskDateCell.txtYear isFirstResponder]);
函数completionBlockHelper
包含使txtYear
成为第一响应者的代码。
任何建议都会有所帮助。
【问题讨论】:
这对我有用。你确定self.dateCell.txtYear
不是nil
吗?你确定completionBlockHelper
被调用了吗?尝试逐步完成测试以尝试找出发生了什么。
是的,很确定 self.dateCell.txtYear
不是 nil 并且 completionBlockHelper
也会被调用。我还尝试用[self.dateCell.txtYear becomeFirstResponder]
替换[self.dateCell completionBlockHelper]
只是为了检查它是否有效但没有运气。
有什么更新吗?我遇到了同样的问题。尝试放置一个假的虚拟视图无济于事
【参考方案1】:
窗口需要成为关键窗口。在 Swift 中:window.makeKeyAndVisible()
【讨论】:
以上是关于iOS 单元测试:如何对 firstResponderStatus 进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ios XCTestCase 中对两个对象不相等进行单元测试
UITableView 单元格中的 UITextField 以编程方式成为FirstResponder
如何对使用 cookie 的 socket.io 中间件进行单元测试