У меня есть Служба аутентификации , я использую ее для проверки состояния авторизации пользователей, входа / выхода пользователя и выполнения любых задач, требующих обращения к API идентификации пользователя.
ЭтоСервис использует зависимость третьей части https://github.com/evgenyneu/keychain-swift
Это позволяет нам легко работать с цепочкой для ключей.
Эта зависимость не передается через Depenancy Injection, вместо этого она импортируется и инициализируется в сервисе..
Как мне смеяться над такой вещью?
Мой текущий подход
Сервис
struct AuthService {
var keyChain = KeyChainSwift()
func isLoggedIn() -> Bool {
return keyChain.hasObjectForKey(key: "AccessToken")
}
}
С моими тестами
class AuthServiceTests: XCTestCase {
func test_isLoggedIn_returnsFalseIfNoAccessTokenIsPresent() {
var sut = AuthService()
sut.keyChain = keyChainSpy()
let result = sut.isLoggedIn()
XCTAssertEqual(result, false)
}
class keyChainSpy {
func hasObjectForKey(key: String) -> Bool {
return false
}
}
}
Это не работает, однако какЯ получаю следующие ошибки
Невозможно присвоить значение типа 'AuthServiceTests.keyChainSpy' для типа 'KeyChainSwift'
и
XCTAssertEqual не удалось: ("true") не равно ("false") -
Я не понимаю, как лучше всего проверить такую вещь?При таком подходе создается впечатление, что он заставляет меня делать все, что я хочу, чтобы высмеивать var
, чего я не хочу, если это не требуется.