开始向补充对象添加测试
测试类代码:
class TokenAdapter {
private let tokenProvider: TokenProviderProtocol!
private let session: SessionProtocol!
// MARK: - Init
init(tokenProvider: TokenProviderProtocol, session: SessionProtocol) {
self.tokenProvider = tokenProvider
self.session = session
}
protocol TokenProviderProtocol {
func getToken(_ completion: @escaping (Result<String, Error>) -> Void)
}
protocol SessionProtocol {
var isLoggedIn: Bool { get }
}
测试代码:
final class TokenAdapterTests: XCTestCase {
func testUnauthorized() {
...
let provider: TokenProviderProtocol = TokenProviderMocked()
let session: SessionProtocol = SessionMocked(isLoggedIn: false)
let adapter = TokenAdapter(tokenProvider: provider, session: session)
...
}
class TokenProviderMocked: TokenProviderProtocol {
func getToken(_ completion: @escaping (Result<String, Error>) -> Void) {
...
}
}
struct SessionMocked: SessionProtocol {
private var _isLoggedIn: Bool
init(isLoggedIn: Bool) {
self._isLoggedIn = isLoggedIn
}
var isLoggedIn: Bool { _isLoggedIn }
}
在测试中,我在线上遇到下一个错误
let adapter = TokenAdapter(tokenProvider: tokenProvider, session: session)
:
“参数类型'任何TokenProviderProtocol不符合预期类型'TokenProviderProtocol'插入'as!TokenProviderProtocol'”
如果我“修复”,XCode 会像这样添加
as! TokenProviderProtocol
:
...(tokenProvider: tokenProvider as! TokenProviderProtocol, ...
并且 1)它没有改变任何东西 - 错误仍然存在; 2) XCode 现在建议删除
as! ...
代码
有什么想法吗?
找到原因了,和 XCode 的提示完全无关 - File
AccessTokenAdapter
没有包含在 Tests target 中 😐
附注太困惑了,XCode 没有指出这一点🤦u200d♂️