作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个与GitHub API集成的iOS应用程序。我正在对OAuth
请求进行单元测试,这需要测试来自GitHub API的代码的接收,该代码将用于交换 token 。
在AppDelegate.swift
中,我具有以下方法,该方法用于在用户授权我的应用程序使用其GitHub帐户时处理来自GitHub的回调:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return true
}
SFSafariViewController
的实例,允许用户按下“授权”按钮。 code
检索url
参数。 URL
实例,以模仿GitHub为我的应用程序提供的内容,但是我想在没有实际请求的情况下对其进行测试。
code
的
URL
参数?
class GitHubAuthorizationCallbackTests: XCTestCase {
let delegate = AppDelegateMock()
func test_AuthorizationCallbackFromGitHub_ApplicationOpensURL() {
guard let url = URL(string: "xxxxxxxxxxxxxx://?code=********************") else { return XCTFail("Could not construct URL") }
let isURLOpened = delegate.application(UIApplication.shared, open: url)
XCTAssertTrue(isURLOpened, "URL is not opened from GitHub authorization callback. Expected URL to be opened from GitHub authorization callback.")
}
}
AppDelegateMock.swift
而不是
AppDelegate.swift
,添加了执行GitHub回调打开我的应用程序时要调用的预期方法:
import UIKit
class AppDelegateMock: NSObject, UIApplicationDelegate {
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
return true
}
}
code
参数和方法的
url
参数所需的逻辑。
最佳答案
因为您要测试回调,所以…让测试直接调用该回调,就像GitHub框架调用了它一样。
围绕幸福的道路编写简单的测试。然后,由于您无法控制外部数据,因此编写测试(如果Swift允许)使用奇怪的options
调用回调的测试。
关于ios - 如何对iOS应用程序代表方法的调用进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667280/
我是一名优秀的程序员,十分优秀!