Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我有一个UIViewController实现了一些WKNavigationDelegate函数,我想在这些函数中单元测试逻辑.这是一个例子: func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandle 我有一个UIVIEwController实现了一些WKNavigationDelegate函数,我想在这些函数中单元测试逻辑.这是一个例子: @H_502_7@

@H_502_7@

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)}
@H_502_7@我希望我的单元测试能够确保使用基于WKNavigationAction的request.url的正确WKNavigationActionPolicy调用decisionHandler.

@H_502_7@但是,我无法弄清楚如何测试这个功能.当我运行我的测试项目时,在webvIEw上调用.load()不会触发委托函数.我也试图直接调用这个函数来测试它,但似乎不可能实例化我自己的新WKNavigationAction(.request是只读的).

@H_502_7@在WKNavigationDelegate函数中单元测试逻辑的正确方法是什么?

解决方法 直接调用委托方法是单元测试环境中最合适的方法.您可以继承WKNavigationAction,并将该类的实例作为输入参数传递给delegate方法: @H_502_7@

@H_502_7@

class FakeNavigationAction: WKNavigationAction {    let testRequest: URLRequest    overrIDe var request: URLRequest {        return testRequest    }    init(testRequest: URLRequest) {        self.testRequest = testRequest        super.init()    }}
@H_502_7@后来,在单元测试中:

@H_502_7@

// setupvar receivedPolicy: WKNavigationActionPolicy?let fakeAction = FakeNavigationAction(testRequest: ...)// actdelegateObject.webVIEw(webVIEw,decIDePolicyFor: fakeAction,decisionHandler: { receivedPolicy = [+++] })// assertXCTAssertEqual(receivedPolicy,theExpectedValue)
@H_502_7@另一种方法是将getter转换为请求,因为WKNavigationAction是一个Objective-C类,但这更像是一个Hacky解决方案.

总结

以上是内存溢出为你收集整理的swift – 单元测试WKNavigationDelegate函数全部内容,希望文章能够帮你解决swift – 单元测试WKNavigationDelegate函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
swift – 单元测试WKNavigationDelegate函数_app_内存溢出

swift – 单元测试WKNavigationDelegate函数

swift – 单元测试WKNavigationDelegate函数,第1张

概述我有一个UIViewController实现了一些WKNavigationDelegate函数,我想在这些函数中单元测试逻辑.这是一个例子: func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandle 我有一个UIVIEwController实现了一些WKNavigationDelegate函数,我想在这些函数中单元测试逻辑.这是一个例子: @H_502_7@

@H_502_7@

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)}
@H_502_7@我希望我的单元测试能够确保使用基于WKNavigationAction的request.url的正确WKNavigationActionPolicy调用decisionHandler.

@H_502_7@但是,我无法弄清楚如何测试这个功能.当我运行我的测试项目时,在webvIEw上调用.load()不会触发委托函数.我也试图直接调用这个函数来测试它,但似乎不可能实例化我自己的新WKNavigationAction(.request是只读的).

@H_502_7@在WKNavigationDelegate函数中单元测试逻辑的正确方法是什么?

解决方法 直接调用委托方法是单元测试环境中最合适的方法.您可以继承WKNavigationAction,并将该类的实例作为输入参数传递给delegate方法: @H_502_7@

@H_502_7@

class FakeNavigationAction: WKNavigationAction {    let testRequest: URLRequest    overrIDe var request: URLRequest {        return testRequest    }    init(testRequest: URLRequest) {        self.testRequest = testRequest        super.init()    }}
@H_502_7@后来,在单元测试中:

@H_502_7@

// setupvar receivedPolicy: WKNavigationActionPolicy?let fakeAction = FakeNavigationAction(testRequest: ...)// actdelegateObject.webVIEw(webVIEw,decIDePolicyFor: fakeAction,decisionHandler: { receivedPolicy =  })// assertXCTAssertEqual(receivedPolicy,theExpectedValue)
@H_502_7@另一种方法是将getter转换为请求,因为WKNavigationAction是一个Objective-C类,但这更像是一个Hacky解决方案.

总结

以上是内存溢出为你收集整理的swift – 单元测试WKNavigationDelegate函数全部内容,希望文章能够帮你解决swift – 单元测试WKNavigationDelegate函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1007744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存