我有一个UIViewController实现了一些WKNavigationDelegate函数,我想在这些函数中单元测试逻辑.这是一个例子:
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
guard let url = navigationAction.request.url else {
decisionHandler(.cancel)
return
}
if url.absoluteString != "https://my-approved-url" {
decisionHandler(.cancel)
return
}
decisionHandler(.allow)
}
Run Code Online (Sandbox Code Playgroud)
我希望我的单元测试能够确保使用基于WKNavigationAction的request.url的正确WKNavigationActionPolicy调用decisionHandler.
但是,我无法弄清楚如何测试这个功能.当我运行我的测试项目时,在webview上调用.load()不会触发委托函数.我也试图直接调用这个函数来测试它,但似乎不可能实例化我自己的新WKNavigationAction(.request是只读的).
在WKNavigationDelegate函数中单元测试逻辑的正确方法是什么?