StubcellΛͬͯϑϩϯτΞϓϦͷ։ൃޮΛ͋͛Α͏@sussan_04162017/01/19ɹएखΤϯδχΞLT #3
View Slide
ླʢ@sussan_0416ʣ• 2015৽ଔೖࣾʢ3 ·ͩएखʣ• Android/iOSΞϓϦΤϯδχΞ ʢJava, Kotlin, Swiftʣ• ݱࡏɺࠂ৴Λ࠷దԽ͢ΔػցֶशΛ୲ ʢpython, Dataflow, PHP etc..ʣ
֓ཁ1. ϑϩϯτଆ։ൃ͋Δ͋Δͷ2. Stubcellͷಋೖํ๏ͱ͍ํ3. StubcellΛࣾͰͬͨࣄྫ
ϑϩϯτΞϓϦͷ։ൃͰ
Α͋͘Δʮʯ
1. APIΑΓϑϩϯτͷ։ൃ͕ઌߦͪ͠Όͬͨ
2. σόοά͍͚ͨ͠ͲAPI͔Βҙਤͨ͠Ϩεϙϯε͕ฦͬͯ͜ͳ͍
3. ֎෦ͷAPIΛ͍ͬͯͯɺSandboxϞʔυ͕ແ͍
։ൃͰΑ͋͘ΔϞϠϞϠ• APIΑΓϑϩϯτ͕։ൃઌߦͨ͠ ˠ ͤΊͯURI͚ͩͰ༻ҙ͠ͱ͍ͯ΄͍͠ʂ• API͔Βҙਤͨ͠Ϩεϙϯε͕ฦͬͯ͜ͳ͍ ˠ ϥϯμϜੑͷ͋ΔͷͳͲݕূ͕ࠔʂ• SandboxϞʔυ͕ແ͍ ˠ ֎෦ͩͬͨΒͳ͓͞Β͍͠
APIΛϞοΫͨ͠Βղܾʂ
Stubcell ͬͯͷ͕͋ΔΒ͍͠Stubcell https://github.com/yosuke-furukawa/stubcell
Stubcell• JSONΛฦ͢͜ͱʹಛԽͨ͠stubαʔόʔ• Ϩεϙϯε༰Λఆٛ͢ΔϑΝΠϧʹɺίϝϯτΛॻ͖ࠐΊΔʢJSON5ରԠʣStubcellϞοΫ͍ͯ͠ͳ͍URIɺຊདྷͷAPIʹϦΫΤετ͢ΔϞοΫͨ͠URIɺStubcell͔ΒϨεϙϯε
ಋೖํ๏
npmͰΠϯετʔϧ$ npm -g install stubcellnpm WARN deprecated [email protected]: Use uuid module instead/usr/local/bin/stubcell -> /usr/local/lib/node_modules/stubcell/bin/stubcell.js+ [email protected]added 110 packages in 14.713s
͍ํ3εςοϓ!• entry.yamlΛॻ͘ʢStubαʔόͷઃఆʣ• ֤URIͷϨεϙϯεΛςΩετϑΝΠϧʹॻ͘• ίϚϯυϥΠϯ͔Βىಈ͢Δ
͔ΜͨΜ!
entry.yamlʢجຊྫʣ# جຊ-request:url: /hogemethod: getresponse:status: 200file: hoge.json# ϨεϙϯεΛॻ͍ͨྫ-request:url: /fugamethod: getresponse:status: 200body: '{"text": ";͕ͩͶ"}'←/hogeͷϦΫΤετʹɹhoge.jsonͷ༰Λฦ͢ʢී௨ͷςΩετͰOKʣ←bodyύϥϝʔλʹɹॻ͍ͨྫ
͋ͱىಈ͢Δ͚ͩ$ stubcellListening on 8090entry yaml is /Users/ta_suzuki/Documents/stubcell/entry.yamlsilent is falserecord proxy is undefinedloose compare undefined$ stubcell --port 3000ɹɹˡ ϙʔτͷࢦఆ$ stubcell --entry ./entry.yamlɹɹˡ entryϑΝΠϧͷࢦఆ$ stubcell --record_target http://echo.jsontest.comɹɹˡ αʔόͷࢦఆ
͔ΜͨΜ!! γϯϓϧ!!
ࣾͰͬͨࣄྫ
εϚϗΞϓϦ։ൃStubcellPCγϛϡϨʔλ ։ൃAPI։ൃதͷURIΛϞοΫ։ൃࡁΈͷURI௨ա։ൃதͷURIΛϞοΫͯ͠ɺ։ൃޮΛ্͛ΔྫAPIଆͷ։ൃͷਐḿʹӨڹ͞Εͣɺϑϩϯτଆͷ։ൃΛਐΊΒΕΔΑ͏ʹͳͬͨ!!
֎෦APIར༻ͷϑϩϯτ։ൃ։ൃAPI֎෦APIStubcellPC֎෦ͷAPIΛ༻͍ͯ͠ΔՕॴΛϞοΫͯ͠ɺ։ൃޮΛ্͛Δྫِͨ͠JSONΛฦ͢ଓ͠ͳ͍֎෦APIͷϨεϙϯεΛِͰ͖Δ͔Βɺσόοά͘͢͠ͳͬͨ!!
ಋೖͯ͠Α͔ͬͨ͜ͱ• APIଆͷ։ൃͷਐḿʹ͔͔ΘΒͣҰ௨Γͷಈ࡞֬ೝ͕Ͱ͖Δ• ҙਤͨ͠ϨεϙϯεΛฦͤΔ͔Βσόοά͍͢͠• entry.yamlϨεϙϯεͷ༰༷ॻʹͳΔ͠ɺςΩετఆ͔ٛͩΒgitཧ͍͢͠
·ͱΊ• ։ൃதʹΑ͋͘Δʮʯ APIͷ։ൃঢ়گɺ֎෦ͷAPIͷڍಈʹӨڹ͞Εͣʹ։ൃ͍ͨ͠ͱ͖ͬͯ͋ΔΑͶ• StubcellΛ͏ͱɺAPIΛϞοΫͰ͖ͯศར npm -g install stubcell entry.yamlΛॻ͘ɺϨεϙϯεΛϑΝΠϧʹॻ͘ɺstubcellͰىಈ͢Δ• StubcellΛࣾͰͬͨࣄྫ εϚϗΞϓϦ։ൃͱ֎෦APIΛͬͨϑϩϯτΞϓϦͷࣄྫΛհ