Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Test Driven Development For Lambda
Search
堀家隆宏
August 09, 2017
Technology
420
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Test Driven Development For Lambda
堀家隆宏
August 09, 2017
More Decks by 堀家隆宏
See All by 堀家隆宏
オープンソースコミュニティで加速するサーバーレスの未来/serverless will be
horike37
4
790
auth0-meetup.pdf
horike37
1
300
What’s happening with Serverless Framework, and it lives with AWS SAM.
horike37
0
150
What is Serverless. Why is Serverless.
horike37
1
140
aws-with-functional-saas
horike37
2
230
serverless-with-oss
horike37
0
180
slsconftokyo
horike37
0
6k
slsconfworkshop
horike37
3
3.1k
serverless-kyoto
horike37
1
190
Other Decks in Technology
See All in Technology
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
1
760
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
580
宣言型部分更新は何を解決しどこへ向かうのか
shuta13
0
290
LLM機能を自作して分かるSnowflake Cortex AIの強み
nayuts
0
350
AI時代のPRレビューにどう向き合うか?
kairim0
1
160
freeeらしさをAIとともに作る / Creating the freee Experience with AI
ymrl
0
220
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
280
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
800
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
130
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
350
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.3k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
840
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Rails Girls Zürich Keynote
gr2m
96
14k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
530
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
720
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Designing for humans not robots
tammielis
254
26k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
Transcript
5FTU%SJWFO%FWFMPQNFOU 'PS-BNCEB
ࣗݾհ w %JHJUBM$VCF$P-UE w 4FSWFSMFTT'SBNFXPSL$PSF$POUSJCVUPSBOE QMVHJOEFWFMPQFS w 4FSWFSMFTT'SBNFXPSLຊޠϑΥʔϥϜཧऀ IUUQTHJUIVCDPNTFSWFSMFTTKBQBOGPSVN
4BOGSBODJTDP
ࠓ͢͜ͱ
-BNCEBΛͬͨΠϕϯτυϦϒϯΞʔΩςΫνϟʹ͓͚Δ ςετͷצॴΛղઆͭͭ͠ɺ ࣮ࡍͷςετίʔυΛಈ͔͠ͳ͕ΒϙΠϯτΛԡ͍͑ͯ͘͞
2ԿނςετΛॻ͘ͷ͔
ܧଓతʹ։ൃΛߦ͏ϓϩδΣΫτϓϩμΫτ ͷ࣭ΛอͪͭͭɺվળͷͨΊͷιʔείʔυͷ มߋΛޮྑ͘ߦ͏ͨΊͷΛ࡞Δ ϞϊϦγοΫͳγεςϜ։ൃͷੈքͰ͜Εಉ͡
2ԿނΠϕϯτυϦϒϯΞʔΩςΫνϟ ͳੈքͰςετͷ͕Α্͕͘Δͷ͔
wૄ݁߹ͳϚΠΫϩαʔϏε܈Λ౷߹ͯ͠ςετΛ͢Δͱ͍͏ɺࠓ·Ͱʹ͋·Γͳ͡Έ ͷͳ͍ςετͷߟ͑ํ͕ඞཁͱͳͬͨ wΞʔΩςΫνϟͷಛੑ্ɺιʔείʔυͷ࣭͕γεςϜࣗମͷ࣭ʹμΠϨΫτʹ ӨڹΛٴ΅ͨ͢ΊɺͳΜͱͳ͘Ͱࡁ·͞Εͳ͍෦͕େ͖͘ͳ͖ͬͯͨ
ΠϕϯτυϦϒϯΞʔΩςΫνϟ ͷςετઓུͬͯͲΜͳͷʁ
ΠϕϯτυϦϒϯΞʔΩςΫνϟͷςετઓུ ΠϯςάϨʔγϣϯςετ Ϣχοτςετ Ϣχοτςετ
ΠϕϯτυϦϒϯΞʔΩςΫνϟͷςετઓུ w࣮ڥʹσϓϩΠͨ͠ΞʔΩςΫνϟͷΠϯϓοτͱΞτϓοτ͕ਖ਼ ͍͜͠ͱΛΠϯςάϨʔγϣϯςετʹΑΓνΣοΫ͢Δ w֤-BNCEBϑΝϯΫγϣϯϢχοτςετʹΑΓɺ୯ମςετΛߦ͏
ΠϯςάϨʔγϣϯςετͷϙΠϯτ w4FSWFSMFTT'SBNFXPSL4".ͳͲͷσϓϩΠπʔϧΛ͍Ξʔ ΩςΫνϟΛఆٛ wσϓϩΠɺςετͷ࣮ࢪɺআͷྲྀΕΛίʔυԽ͢Δ
"1*(BUFXBZͷΠϯςάϨʔγϣϯςετྫ IUUQTHJUIVCDPNIPSJLFTFSWFSMFTTBQJJOUFHSBUJPOUFTUTBNQMF σϓϩΠ আ ςετ beforeAll(() => { Utils.deployService(); });
it('should return correct values from all apis', () => { const testEndpoint = `${endpoint}/hello`; return fetch(testEndpoint, { method: 'GET' }) .then(response => response.json()) .then((json) => expect(json.message).to.equal(‘Go function successfully!')); }); afterAll(() => { Utils.removeService(); }); });
ϢχοτςετͷྲྀΕ w"84"1*ͷଓΛϞοΫɺ-PDBM4UBDLͱ͍ͬͨԾͷڥͰஔ͖͑Δɻͭ·Γɺ "84Ϧιʔεςετ֎ͱͯ͠୯७ʹॲཧͷྲྀΕΤϥʔॲཧͷذͳͲͷϓϩάϥ Ϝ༷ͷςετʹॏΛஔ͘ w"84"1*ͷଘࡏΛҙࣝ͢ΔҎ֎ɺ͍ΘΏΔ௨ৗͷϢχοτςετ
ϞοΫΛ࡞Δྫ const dynamoDbGetStub = sinon.stub(proxyDynamoDB.prototype,’get').returns( {promise: () => { return
Promise.resolve({ Item: { post_title: 'aa', post_content: 'bb' } }) }}) %ZOBNP%#%PDVNFOU$MJFOUHFU QSPNJTF ͷฦΓΛࢦఆ -BNCEBͷϢχοτςετϕετϓϥΫςΟε IUUQRJJUBDPNIPSJLFJUFNTGGCDBF
͜ΕΒͷςετΛΈ߹Θͤͯ ͲͷΑ͏ʹ5FTU%SJWFOʹ։ൃΛߦ͏ͷ͔
5%%ͷྲྀΕ w·ͣΠϯςάϨʔγϣϯςετΛॻ͘ɻ-BNCEBਖ਼ৗܥͷΈͷͬ͘͟Γ௨ΔϨϕ ϧͰྑ͍ w࣍ʹ-BNCEBͷΤϥʔॲཧʹ͍ͭͯཧͯ͠ϢχοτςετͱϓϩάϥϜΛϒϥο γϡΞϓ w࠷ޙʹΠϯςάϨʔγϣϯςετͱϢχοτςετ͕௨Δ͜ͱΛ֬ೝͯ͠
·ͱΊ
wΠϯςάϨʔγϣϯςετΛߦͬͯϚΠΫϩαʔϏεશମΛཏ͢ΔςετΛߦ ͏ wϢχοτςετ"84"1*ͷʹଓͤͣʹ७ਮͳϓϩάϥϜͷৼΔ͍ͷΈΛς ετ͢Δ w։ൃͷࡍ·ͣΠϯςάϨʔγϣϯςετΛॻ͘ͱ͜Ζ͔Β
࠷େࣄͳ͜ͱ
ͨΓલͷ͜ͱͰ͋Γ·͕͢ɺ ࣮ઓͰ͑ΔͨΊʹࣗͰςετΛॻ͍ͯ ମʹ֮͑ͤ͞·͠ΐ͏