Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TypeScriptでDIしてみた
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ryohei Hisamitsu
January 16, 2021
Technology
520
0
Share
TypeScriptでDIしてみた
Ryohei Hisamitsu
January 16, 2021
More Decks by Ryohei Hisamitsu
See All by Ryohei Hisamitsu
re:Invent参加フィードバック会
hisami
0
100
GoのアプリをEKS(Fargate)にデプロイしてみた話
hisami
0
260
Greengrassを使ったIoTのアーキテクチャ
hisami
0
180
ECS Execを使ってFargateにログインしてみた
hisami
1
400
Other Decks in Technology
See All in Technology
オライリーイベント登壇資料「鉄リサイクル・産廃業界におけるAI技術実応用のカタチ」
takarasawa_
0
410
Purview Endpoint DLP 動かしてみた
kozakigh
0
410
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
140
ECSのTerraformモジュールにコントリビュートした話
harukasakihara
0
160
"うちにはまだ早い"は本当? ─ 小さく始めるPlatform Engineering入門
harukasakihara
6
590
20260515 ログイン機能だけではないアカウント管理を全体で考える~サービス設計者向け~
oidfj
0
610
セキュリティ対策、何からはじめる? CloudNative環境の脅威モデリングと リスク評価実践入門 #cloudnativekaigi
varu3
5
920
20260516_SecJAWS_Days
takuyay0ne
2
420
AWSアップデートから考える継続的な運用改善
toru_kubota
2
190
20260513_生成AIを専属DSに_AI分析結果の検品テクニック_ハンズオン_交通事故データ
doradora09
PRO
0
230
分断された OT と IT を繋ぐ架け橋 -Kubernetes が切り拓く 産業用組み込み製品の現在地 -
yudaiono
1
110
LookerとADKで作る社内AIエージェント
chanyou0311
0
220
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
150
ラッコキーワード サービス紹介資料
rakko
1
3.3M
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
390
Exploring anti-patterns in Rails
aemeredith
3
350
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
35k
The SEO identity crisis: Don't let AI make you average
varn
0
460
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
370
Test your architecture with Archunit
thirion
1
2.2k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
190
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Transcript
で してみた NCDC株式会社 久光遼平
DI(Dependency Injection)とは? • 依存性(Dependency)の注入(Injection) • もう少しわかりやすく あるクラスが依存している要素をクラスの外側から注入すること ClassA { private
classB constructor( ClassBInterface classB ) { this.classB = classB; } } ClassA { private classB constructor() { this.classB = new ClassB(); } }
何が嬉しいの? • 単体テストがしやすくなる! class Service { private repository; constructor() {
this.repository = new Repository(); } find() { // ... this.repository.find(); return; } } よくあるテストしにくい例 テストしたいのはService層のロジック Repository(DB)のテストも含まれてしまう ・テスト失敗した時の切り分けが面倒 ・実行時間がかかる DI→テスト側からモックを注入できる!
実際のアプリではどうやって注入するの? • DIコンテナという便利な仕組みがある ◦ インスタンスの生成、注入を一括で行ってくれる
TypeScriptのDIライブラリ
②注入する側 ①注入される側 ③DIコンテナ 実装例 ④express
まとめ • DIすればテストしやすい作りにできる • DIの仕組みを作るにはInversifyJSを使えば楽 • あとはテストの時にモックを注入するだけ! • 追記:Jestのモック機能を使えば、DIしなくてもテストは書けそう ◦
DIのメリット→より簡単に自由にテスト書ける