Assert編
Assert
を頻繁に使ったりしますが、やはり自作UIパーツの特定の値が変わったかどうか、確かめたいですよね。
そんな時は、'Assert'を作ってやりましょう。
例:HogeButton
という自作ボタンに、isHoge
というBool型変数がある場合。
func grey_confirmToButtonHighlighted() -> GREYAssertionBlock {
return GREYAssertionBlock.assertion(withName: "grey confirmToIsHighlighted") { (ele, err) -> Bool in
guard let _ = err else { return false }
guard let button = ele as? HogeButton else { return false }
return button.isHoge
}
}
EarlGrey.select(elementWithMatcher: grey_kindOfClass(HogeClass.self))
.inRoot(grey_kindOfClass(UIView.self))
.assert(self.grey_confirmToButtonHighlighted())
こんな感じで良い感じにAssertできます。
Action編
Actionといっても、画面操作のメソッドはほとんど備わっているので、主に取得したい要素などに使ったりしています。
ほとんどAssert
と同じ作り方ですが、要素に対して確認するか、働きかけるかで使い分けています。
func grey_getButtonInstance(completion: ((UIButton) -> Void)?) -> GREYActionBlock {
return GREYActionBlock.action(withName: "grey getButtonInstance") { (ele, err) -> Bool in
guard let _ = err else { return false }
guard let button = ele as? UIButton else { return }
completion?(button)
return true
}
}
let storeButton: UIButton!
EarlGrey.select(elementWithMatcher: grey_kindOfClass(UIButton.self))
.inRoot(grey_kindOfClass(UIView.self))
.assert(grey_getButtonInstance { button in
storeButton = button
})
こんな感じで取得できます。