Skip to content

Instantly share code, notes, and snippets.

@eliperkins
Last active October 23, 2019 05:03
Show Gist options
  • Save eliperkins/8f4115151497dc1953ea to your computer and use it in GitHub Desktop.
Save eliperkins/8f4115151497dc1953ea to your computer and use it in GitHub Desktop.
//: Mocks Playground
import UIKit
struct User {
}
struct PushNotificationController {
let registrar: PushNotificationRegistrar
init(registrar: PushNotificationRegistrar) {
self.registrar = registrar
}
var user: User? {
didSet {
if let _ = user {
registrar.registerUserNotificationSettings(UIUserNotificationSettings())
}
}
}
}
protocol PushNotificationRegistrar {
func registerUserNotificationSettings(notificationSettings: UIUserNotificationSettings)
}
extension UIApplication: PushNotificationRegistrar { }
class FauxRegistrar: PushNotificationRegistrar {
var registered = false
func registerUserNotificationSettings(notificationSettings: UIUserNotificationSettings) {
registered = true
}
}
var registrar = FauxRegistrar()
var controller = PushNotificationController(registrar: registrar)
controller.user = User()
registrar.registered
@cleexiang
Copy link

Use this way, should I add a protocol for every system api? I afraid that too much code will be increased.

@paramadharmika
Copy link

paramadharmika commented Sep 18, 2017

@cleexiang, you only need to test public method, in your boundary (the one that interested you much). Not every single system api need testing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment