Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
TypeScriptでDIしてみた
Ryohei Hisamitsu
January 16, 2021
Technology
0
98
TypeScriptでDIしてみた
Ryohei Hisamitsu
January 16, 2021
Tweet
Share
Other Decks in Technology
See All in Technology
1027kg
0
200
yunoda
0
140
karamem0
1
780
udonyuya
1
550
nisshii0313
1
170
robcrowley
0
150
thockin
3
960
ryomasumura
0
120
gobeyond20xx
0
340
hmatsu47
5
720
leaner_tech
0
960
lmi
3
1.2k
Featured
See All Featured
philhawksworth
190
17k
chriscoyier
145
20k
chriscoyier
683
180k
trishagee
24
2.5k
destraynor
222
47k
samanthasiow
56
6.4k
dotmariusz
94
5.5k
jponch
103
5.1k
deanohume
294
28k
addyosmani
1346
190k
tanoku
258
24k
shpigford
165
19k
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のメリット→より簡単に自由にテスト書ける