2016-10-19 4 views
1

私はView Controllerのスナップショットテストを使用しています。これは、ビューコントローラがテストで初期化される方法です。UICollectionView performBatchUpdates補完が呼び出されずに画面がオフになっています

window.addSubview(viewController.view) // simulate the view is visible (probably unnecessary) 
viewController.view.frame = self.snapshotFrame // set frame 
viewController.beginAppearanceTransition(true, animated: false) // simulate VC's life cycle 
viewController.endAppearanceTransition() 

ビューコントローラにはUICollectionViewが含まれています。 performBatchUpdatesを使用してコレクションビューの更新を実行すると、更新ブロックが完了しても完了が決して呼び出されません。

// Animate udpates 
self.collectionView.performBatchUpdates({ 
     // is called 
}, completion: { _ in 
     // never called 
}) 

私はコレクションビューのオフスクリーンレンダリングに関連していると思います。誰かが同様の問題を経験していますか?それが画面上にあることをUICollectionViewに納得させるために私は何が欠けていますか?

答えて

0

問題が見つかりました。それはすべて正しいタイミングについてだった。完了する前にテストケースが終了し、ビューコントローラの割り当てが解除されました。

私は

viewController.view.layer.speed = 100 // speed up animations 

を設定することで、コレクションビューのアニメーションを高速化し、0.1秒にテストケースのタイムアウトを増加しました。すべてが期待通りに機能します。

関連する問題