Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
SwiftでHTTP通信のスタブ化 / Stubbing HTTP Requests in Swift
Jiro Nagashima
February 28, 2015
Technology
4
8.7k
SwiftでHTTP通信のスタブ化 / Stubbing HTTP Requests in Swift
#33testing
Jiro Nagashima
February 28, 2015
Tweet
Share
More Decks by Jiro Nagashima
See All by Jiro Nagashima
グロースを加速するLooker活用 / Leveraging Looker to accelerate growth
hedjirog
3
1.7k
プロダクトの成長を支えるKPI / KPIs for growing your product
hedjirog
16
3.2k
UIViewPropertyAnimatorで実現するリッチなアニメーション表現
hedjirog
4
1.5k
ReactorKit at Wantedly
hedjirog
2
590
ReactorKitを利用した緩やかなアーキテクチャの移行
hedjirog
3
1.2k
限られたリソースで進める段階的なSwit移行
hedjirog
2
4.5k
エンジニア・デザイナーで取り組むグロースハック
hedjirog
6
2k
iOS 10 時代のアニメーション / Introduction to UIViewPropertyAnimator
hedjirog
3
2.8k
How we use fastlane at Wantedly
hedjirog
9
10k
Other Decks in Technology
See All in Technology
History of the ML system in KARTE
kargo113
0
620
データエンジニアリングの潮流を俯瞰する
tetsuroito
1
720
SI企業が「アジャイル推し」になったら 幸せになれますか?/Can SI company be happy if it becomes “Agile stan” ?
chinmo
1
1.1k
JJUG2022_spring_Keycloak (Red Hat Single Sign-on)
tinoue
0
200
Data in Google I/O - IO Extended GDG Seoul
kennethanceyer
0
150
Retca Cloud
bau
0
450
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
520
機械学習システムアーキテクチャ入門 #1
asei
3
1.2k
Modern Android dependency injection
hugovisser
1
120
miisan's career talk
mii3king
0
220
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
260
インタラクティブなメディアの地図投影法: WebメルカトルからAdaptive Projectionsへ / MIERUNE 社内勉強会 #033
sorami
2
210
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
415
59k
The Web Native Designer (August 2011)
paulrobertlloyd
74
1.9k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
How to train your dragon (web standard)
notwaldorf
58
3.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.3k
Ruby is Unlike a Banana
tanoku
91
9.2k
Designing for humans not robots
tammielis
241
23k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Stop Working from a Prison Cell
hatefulcrawdad
261
17k
What's new in Ruby 2.0
geeforr
336
30k
Transcript
4XJGU Ͱ )551௨৴ͷελϒԽ !IFEKJSPH
ͳ͕͠·͡Ζ͏ !IFEKJSPH 4BOTBOגࣜձࣾ&JHIU
)551௨৴ͷελϒԽ
/-5)5514UVC4FSWFS ैདྷख๏ 0))5514UVCT FUD…
ΞϓϦ෦ͷαʔόʔ ैདྷख๏ /463-1SPUPDPMʹ४ڌͨ͠Ϋϥε .FUIPE4XJ[[MJOH
ʷΞϓϦ෦ͷαʔόʔ ैདྷख๏ ʷ/463-1SPUPDPMʹ४ڌͨ͠Ϋϥε ʷ.FUIPE4XJ[[MJOH
.PZB
None
None
.PZB w ωοτϫʔΫपΓͷநԽϨΠϠʔ w ςετ༻ͷελϒѻ͑Δ
Πϝʔδ͜Μͳײ͡ IUUQEFWFMPQFSIBUFOBTUBGGDPNFOUSZTNBSUBQJDMJFOUXJUITXJGU VTJOHFOVNBOEHFOFSJDT
IFEKJSPH2JJUB'FFE
"1*ͷهड़
enum QiitaAPI { case Items case TagItems(String) } FOVNఆٛ
extension QiitaAPI : MoyaPath { var path: String { switch
self { case .Items: return "/api/v2/items" case .TagItems(let tagID): return "/api/v2/tags/\(tagID)/items" } } } ύεࢦఆ
extension QiitaAPI : MoyaTarget { var baseURL: NSURL { return
NSURL(string: "https://qiita.com")! } var sampleData: NSData { switch self { case .Items, .TagItems: return stubbedResponse("Items") } } } B63-ࢦఆ
extension QiitaAPI : MoyaTarget { var baseURL: NSURL { return
NSURL(string: "https://qiita.com")! } var sampleData: NSData { switch self { case .Items, .TagItems: return stubbedResponse("Items") } } } CελϒԽͨ͠ϨεϙϯεΛࢦఆ
ϓϩόΠμͷΓସ͑
static func DefaultProvider() -> ReactiveMoyaProvider<QiitaAPI> { return ReactiveMoyaProvider(endpointsClosure: endpointsClosure) }
static func StubbingProvider() -> ReactiveMoyaProvider<QiitaAPI> { return ReactiveMoyaProvider(endpointsClosure: endpointsClosure, stubResponses: true) } ϓϩόΠμఆٛ
QiitaProvider.sharedProvider = QiitaProvider.StubbingProvider() Γସ͑
IUUQTHJUIVCDPNBSUTZFJEPMPO ࢀߟ IUUQTHJUIVCDPN"TI'VSSPX.PZB σϞ IUUQTHJUIVCDPNIFEKJSPH2JJUB'FFE