Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SwiftでHTTP通信のスタブ化 / Stubbing HTTP Requests in Swift

Jiro Nagashima
February 28, 2015

SwiftでHTTP通信のスタブ化 / Stubbing HTTP Requests in Swift

#33testing

Jiro Nagashima

February 28, 2015
Tweet

More Decks by Jiro Nagashima

Other Decks in Technology

Transcript

  1. 4XJGU
    Ͱ
    )551௨৴ͷελϒԽ
    !IFEKJSPH

    View Slide

  2. ͳ͕͠·͡Ζ͏
    !IFEKJSPH
    4BOTBOגࣜձࣾ&JHIU

    View Slide

  3. )551௨৴ͷελϒԽ

    View Slide

  4. /-5)5514UVC4FSWFS
    ैདྷख๏
    0))5514UVCT
    FUD…

    View Slide

  5. ΞϓϦ಺෦ͷαʔόʔ
    ैདྷख๏
    /463-1SPUPDPMʹ४ڌͨ͠Ϋϥε
    .FUIPE4XJ[[MJOH

    View Slide

  6. ʷΞϓϦ಺෦ͷαʔόʔ
    ैདྷख๏
    ʷ/463-1SPUPDPMʹ४ڌͨ͠Ϋϥε
    ʷ.FUIPE4XJ[[MJOH

    View Slide

  7. .PZB

    View Slide

  8. View Slide

  9. View Slide

  10. .PZB
    w ωοτϫʔΫपΓͷந৅ԽϨΠϠʔ
    w ςετ༻ͷελϒ΋ѻ͑Δ

    View Slide

  11. Πϝʔδ͸͜Μͳײ͡
    IUUQEFWFMPQFSIBUFOBTUBGGDPNFOUSZTNBSUBQJDMJFOUXJUITXJGU
    VTJOHFOVNBOEHFOFSJDT

    View Slide

  12. IFEKJSPH2JJUB'FFE

    View Slide

  13. "1*ͷهड़

    View Slide

  14. enum QiitaAPI {
    case Items
    case TagItems(String)
    }
    FOVNఆٛ

    View Slide

  15. extension QiitaAPI : MoyaPath {
    var path: String {
    switch self {
    case .Items:
    return "/api/v2/items"
    case .TagItems(let tagID):
    return "/api/v2/tags/\(tagID)/items"
    }
    }
    }
    ύεࢦఆ

    View Slide

  16. extension QiitaAPI : MoyaTarget {
    var baseURL: NSURL {
    return NSURL(string: "https://qiita.com")!
    }
    var sampleData: NSData {
    switch self {
    case .Items, .TagItems:
    return stubbedResponse("Items")
    }
    }
    }
    B63-ࢦఆ

    View Slide

  17. extension QiitaAPI : MoyaTarget {
    var baseURL: NSURL {
    return NSURL(string: "https://qiita.com")!
    }
    var sampleData: NSData {
    switch self {
    case .Items, .TagItems:
    return stubbedResponse("Items")
    }
    }
    }
    CελϒԽͨ͠ϨεϙϯεΛࢦఆ

    View Slide

  18. ϓϩόΠμͷ੾Γସ͑

    View Slide

  19. static func DefaultProvider() -> ReactiveMoyaProvider {
    return ReactiveMoyaProvider(endpointsClosure: endpointsClosure)
    }
    static func StubbingProvider() -> ReactiveMoyaProvider {
    return ReactiveMoyaProvider(endpointsClosure: endpointsClosure, stubResponses: true)
    }
    ϓϩόΠμఆٛ

    View Slide

  20. QiitaProvider.sharedProvider = QiitaProvider.StubbingProvider()
    ੾Γସ͑

    View Slide

  21. IUUQTHJUIVCDPNBSUTZFJEPMPO
    ࢀߟ
    IUUQTHJUIVCDPN"TI'VSSPX.PZB
    σϞ
    IUUQTHJUIVCDPNIFEKJSPH2JJUB'FFE

    View Slide