XCTest waitForExpectations(...)等待多个结果

时间:2017-03-22 16:45:43

标签: ios xctest xcode-ui-testing ui-testing

在UITest中,点击登录按钮后,我需要等待两个事件,登录成功后会显示更新或主屏幕,并决定做什么。 文档说,

  

只有一个-waitForExpectationsWithTimeout:handler:可以在任何给定时间激活,但是        * {期望 - >的多个离散序列等待}可以链接在一起。

所以需要一点点工作,但最终想出来了。

2 个答案:

答案 0 :(得分:1)

您可以向谓词添加参数,并在条件之间使用OR。

let skipUpdateButtonPredicate = NSPredicate(format: "%@.exists == 1 OR %@.exists == 1", skipUpdateButton, homeTabBar)
self.expectation(for: skipUpdateButtonPredicate, evaluatedWith: [Any](), handler: nil)
testCase.waitForExpectations(timeout: Constants.loginTimeout,
                                 handler: nil)

然后你可以在这里分支,如果出现了主页或更新:

if skipUpdateButton.exists {
    skipUpdateButton.tap()
}

答案 1 :(得分:0)

使用期望时,您可以设置需要满足的次数。

public abstract class BaseEntity
{
    Guid objectId = Guid.NewGuid();
    public virtual Guid ObjectId { get { return objectId; } }

    public override int GetHashCode()
    {
        return ObjectId.GetHashCode();
    }

    public override bool Equals(object other)
    {
        if(other == null)
            return false;
        if(ObjectId != (other as BaseEntity).ObjectId)
            return false;
        return ReferenceEquals(this, other);
    }
}