我想为动画块编写测试用例。
-(void)removeFooter {
[UIView animateWithDuration:0.3 animations:^{
self.contentOffset = CGPointMake(0, 0);
} completion:^(BOOL finished) {
if (!self.loadMoreDelegate) {
self.tableFooterView = nil;
}
}];
}
在测试用例中需要检查tablefooterview,但是 self.tableFooterView = nil; 在完成块中执行一段时间后测试用例在它之前运行。请告诉我如何为此编写测试用例。
答案 0 :(得分:0)
您可以拨打"测试用例"竞赛方法中的方法
请记住,它通常会在该线程中执行。
但是如果你想在主要的那个中执行它,你可以用这种方式调用方法:
-(void)removeFooter {
[UIView animateWithDuration:0.3 animations:^{
self.contentOffset = CGPointMake(0, 0);
} completion:^(BOOL finished) {
if (!self.loadMoreDelegate) {
self.tableFooterView = nil;
}
[self performSelectorOnMainThread:@selector(myMethod:) withObject:nil waitUntilDone:YES];
}];
}
答案 1 :(得分:0)
我得到了解决方案。 在anthor线程中执行任务,并在主线程中休眠直到任务完成。
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:^{
// task which take time to execute
self.tableView.refreshDelegate = self;
[self.tableView failedToRefreshWithMessage:@"test message"];
}];
sleep(2.5); // greater than task completion time
XCTAssertFalse(self.tableView.isPullToRefresh,@"refresh control not stop.");