그것은에 가장 좋은 방법입니다 단위 테스트 중에는 네트워크 호출을 사용하지 마십시오. 이것은 모의 데이터를 사용한 의존성 주입이 목적입니다.
나는 한번의 이야기와 예제 코드는 여기에서 찾을 수 있습니다 않았다 https://github.com/karnett/MVVM
이 실제 질문에 확장하려면 - 나는 한 번 한 번에 스택 오버플로 우주 주위에 떠 있었다 이러한 두 가지 기능을 사용할 수 :
func wait(_ duration: TimeInterval, object: XCUIElement)
{
//waits for condition to be met when changing views before continuing tests.
_ = self.expectation(
for: NSPredicate(format: "exists == 1"),
evaluatedWith: object,
handler: nil)
self.waitForExpectations(timeout: duration, handler: nil)
}
func wait(_ duration: TimeInterval, object: XCUIElementQuery, count: Int)
{
//waits for condition to be met when changing views before continuing tests.
_ = self.expectation(
for: NSPredicate(format: "self.count = \(count)"),
evaluatedWith: object,
handler: nil)
self.waitForExpectations(timeout: duration, handler: nil)
}
당신이에 의해 그들을 호출 할 수 있습니다 :보기는 X 시간에로드되지 않는 경우
let emailTextField = app.textFields["Email"]
self.wait(2.0, object: app.textFields["Email"])
, 단위 테스트가 실패합니다. 단위 테스트는 1) 아무 것도 깨지 않았고, 2) 사용자 요구 사항을 확인하고, 3) 사용자가 좋은 경험을하고 있음을 보장하기 위해 존재합니다.
답장을 보내 주셔서 감사합니다! 예, 조롱에 대해 알고 있으며, 나머지는 내보기와 동일합니다. 모델 수업. 그러나이 테스트에서는이 특정 방법을 다루기를 원했습니다. 여기서 뷰 컨트롤러를 테스트하지 않으므로 UI 요소에 액세스 할 수 없습니다. vars와 객체가 설정되기를 기다리기 위해 NSPredicate를 사용해야합니다. 또한 waitForExpectations가 XCTWaiter.wait()로 대체되었습니다. – Nikolai