首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用KIF测试异步UITableView

使用KIF测试异步UITableView
EN

Stack Overflow用户
提问于 2012-01-13 05:57:19
回答 1查看 2.5K关注 0票数 1

我刚开始使用KIF,在使用当前配置测试异步加载的表视图时遇到了问题。

我的应用程序中有一个带按钮的主屏幕。当按下该按钮时,将显示一个模式视图控制器。

代码语言:javascript
复制
- (void)viewDidLoad
{
    [super viewDidLoad];

    // Setup accessibility
    self.theTableView.accessibilityLabel = @"My List";

    // Register for notifications
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectsLoadedNotification:) name:kNotificationObjectsLoaded object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(objectsFailedToLoadNotification:) name:kNotificationObjectsFailedToLoad object:nil];

    // Start loading new data
    [[MyListObjectManager sharedInstance] requestObjects];
}

现在,我已经在KIF中设置了一个测试,如下所示:

代码语言:javascript
复制
+ (id)scenarioToSelecList
{
    KIFTestScenario *scenario = [KIFTestScenario scenarioWithDescription:@"Test that a user can select an item from my list."];

    [scenario addStep:[KIFTestStep stepToTapViewWithAccessibilityLabel:@"List"]];
    [scenario addStep:[KIFTestStep stepToWaitForNotificationName:kNotificationObjectsLoaded object:nil]];
    [scenario addStep:[KIFTestStep stepToTapRowInTableViewWithAccessibilityLabel:@"My List" atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]];
}

当我运行测试时,KIF永远不会看到我的对象已加载通知。

在调试过程中,我将viewDidLoad方法中的objectManager requestObjects调用替换为一个异步调用,以便在三秒钟后请求对象:

代码语言:javascript
复制
[[MyListObjectManager sharedInstance] performSelector:@selector(requestObjects) withObject:nil afterDelay:3.0];

执行此操作时,我在KIF输出中看到以下内容:

代码语言:javascript
复制
PASS (0.90s): Tap view with accessibility label "Find Books"
PASS (3.02s): Wait for notification "notificationObjectsLoaded"

这让我相信最初的问题是我等待的通知在第一步执行完成之前就被触发了。

因此,问题就变成了,为什么第一步需要0.9秒才能完成?它是否在等待模式动画完成后才从该步骤返回?在这种情况下,加载对象的请求比动画完成得更快。

应该如何用KIF来处理这个问题呢?或者,有没有一种不同的方法来加载我的表视图的异步数据,这样会更合适?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-13 10:39:20

您的怀疑可能是正确的,即在您运行侦听它的步骤之前触发了通知,但我在您的输出中注意到该步骤正在成功。

在任何情况下,如果您正在将项目加载到您的表视图中,您点击其中一个项目的步骤将等到它们加载的超时-并且您可以更改该超时。如果您完全删除等待通知的步骤,您可能会发现您的测试运行良好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8842929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档