2016-07-07 35 views
1

目前,我等因素出現這樣的:在EarlGrey中,等待元素出現的非輪詢方式是什麼?

let populated = GREYCondition(name: "Wait for UICollectionView to populate", block: { _ in 
    var errorOrNil: NSError? 

    EarlGrey().selectElementWithMatcher(collectionViewMatcher) 
       .assertWithMatcher(grey_notNil(), error: &errorOrNil) 

    let success = (errorOrNil == nil) 
    return success 
}).waitWithTimeout(20.0) 

GREYAssertTrue(populated, reason: "Failed to populate UICollectionView in 20 seconds") 

哪個民調持續20秒集合視圖來填充。有沒有更好的,非輪詢的方式來實現這一目標?

回答

1

EarlGrey建議使用其synchronization等待元素,而不是使用睡眠或條件檢查,如儘可能等待。

EarlGrey在GREYConfiguration可變kGREYConfigKeyInteractionTimeoutDuration值設置爲30秒,狀態 -

* Configuration that holds timeout duration (in seconds) for action and assertions. Actions or 
* assertions that are not scheduled within this time will fail due to timeout. 

既然你等上20秒鐘的支票,你可以而不是簡單地將其更改爲 -

EarlGrey().selectElementWithMatcher(collectionViewMatcher) 
      .assertWithMatcher(grey_notNil(), error: &errorOrNil) 

它會在沒有超時的情況下填充。

+2

所以我需要跟蹤我們執行獲取請求的背景隊列,並且earlgrey能夠與它同步。我看到調度隊列空閒資源使用空閒資源協議。爲什麼沒有在文檔中提及的原因?似乎我們可以將資源包裝在IdlingResource中,以在我們的測試中實現更強大的功能。 – khandpur

相關問題