gpt4 book ai didi

ios - 使用 KIF 测试异步 UITableView

转载 作者:行者123 更新时间:2023-11-28 17:39:11 25 4
gpt4 key购买 nike

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

我的应用程序中有一个带有按钮的主屏幕。按下该按钮时,将显示一个模态视图 Controller 。

- (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 中设置了一个测试,如下所示:

+ (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] 调用替换为异步调用以在三秒后请求对象:

[[MyListObjectManager sharedInstance] performSelector:@selector(requestObjects) withObject:nil afterDelay:3.0];

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

PASS (0.90s): Tap view with accessibility label "Find Books"
PASS (3.02s): Wait for notification "notificationObjectsLoaded"

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

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

KIF 应该如何处理这个问题?或者是否有更合适的不同方法来为我的 tableview 加载异步数据?

最佳答案

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

在任何情况下,如果您正在将项目加载到您的 TableView 中,您点击其中一个的步骤将等到它们加载超时 - 您可以更改该超时。如果完全删除等待通知的步骤,您可能会发现测试工作正常。

关于ios - 使用 KIF 测试异步 UITableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com