Как написать примеры модульных тестов (XCTest) в UIWebView / WebKit - Swift - PullRequest
1 голос
/ 25 февраля 2020

Я хочу написать примеры модульных тестов (XCTest) в UIWebView / Webkit-Swift. Пожалуйста, опубликуйте любую полезную ссылку, пример или учебное пособие.

Спасибо. Ширам

1 Ответ

1 голос
/ 25 февраля 2020

Хороший способ - создать поддельные навигационные действия, чтобы вручную вызвать делегата.

В этом вопросе у вас есть хороший пример для написания тестовых примеров этого способа. unit-testing-wknavigationdelegate-functions

Пример для проверки загрузки в навигации:

// setup
let fakeNavigation = WKNavigation()

delegateObject.refresh() // Set loading to true and init the web view
XCTAssertTrue(delegateObject.loading)

delegateObject.webView(webView, didFinish: fakeNavigation)
XCTAssertFalse(delegateObject.loading)

Пример для проверки политики:

class FakeNavigationAction: WKNavigationAction {
    let testRequest: URLRequest
    override var request: URLRequest {
        return testRequest
    }

    init(testRequest: URLRequest) {
        self.testRequest = testRequest
        super.init()
    }
}

// setup
var receivedPolicy: WKNavigationActionPolicy?
let fakeAction = FakeNavigationAction(testRequest: ...)

// act
delegateObject.webView(webView, decidePolicyFor: fakeAction, decisionHandler: { 
    receivedPolicy = $0 
})


XCTAssertEqual(receivedPolicy, theExpectedValue)
...