我在一個更大的項目中使用Cedar框架進行單元測試。我正在爲包含UITableView的視圖編寫單元測試。如何刷新TableViewCells
初始化:
subject = [[ControllerWithTableView alloc] initWithParams:params];
navigationController = [[UINavigationController alloc] initWithRootViewController:subject];
然後,我設置了一些事情,並呼籲:
[subject: viewWillAppear:NO];
在測試中我可以在indexPaths等要求細胞 這背後的主要想法是,它運行時不會讓UI有太多時間設置。
在某些測試中,我不得不補充:
[subject.view layoutIfNeeded];
和然後它的工作。
但在當前的測試中,我添加了一個新的tableViewRow,它在運行時調用了相同的方法。但我無法通過測試重新加載UITableView來創建新的行和單元格,並對其進行測試。
Here建議使用:
#define tickRunLoop (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.01, false))
它的工作原理。但有時它會崩潰。不只是一次測試失敗,而是崩潰了運行單元測試的過程。所有其他測試都不會運行到最後。我不能推動不穩定的代碼到客戶的回購,所以這不是一個選項...
我正在使用XCode 8.3.3,如果這是相關的。
我還能做些什麼來強制刷新?