misskey icon indicating copy to clipboard operation
misskey copied to clipboard

Dependency injection

Open syuilo opened this issue 3 years ago • 7 comments

Summary

外部へのHTTPリクエストとかジョブキューの状態とか気にしないでテスト書けるようにしたい

InversifyJSとかのDIライブラリ使う or NestJSで書き直す

syuilo avatar Apr 01 '22 07:04 syuilo

理想的には全部Nestで書き直すのが良いんだろうけど、私のスキルが足りなすぎるのとあまりにも大変になるから、現実的には必要な箇所だけDIコンテナライブラリ使ってやっていく感じになりそう

syuilo avatar Apr 01 '22 08:04 syuilo

https://github.com/typestack/typedi がシンプルで良さそう

syuilo avatar Apr 02 '22 05:04 syuilo

外部ライブラリのクラスのインスタンスとかはどうやって注入するんだろう

syuilo avatar Apr 02 '22 09:04 syuilo

テスト上でTypeORMのRepositoryもDIしたい感じが出てきた

syuilo avatar Jun 05 '22 11:06 syuilo

外部ライブラリのクラスのインスタンスとかはどうやって注入するんだろう

これが謎

syuilo avatar Jun 05 '22 11:06 syuilo

https://github.com/microsoft/tsyringe でも良さそう

syuilo avatar Jul 13 '22 14:07 syuilo

外部ライブラリのクラスのインスタンスとかはどうやって注入するんだろう

これが謎

こんな感じでラップしたクラスを作るのが正解っぽい? https://github.com/inversify/inversify-express-example/blob/master/MongoDB/utils/mongodb/client.ts

大変そう

syuilo avatar Aug 04 '22 08:08 syuilo

ヌァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァァンンンンオオオオンンオンオンオンオンンンンンンンンン゛ン゛!!!!!!!!!!!!!!!!

syuilo avatar Aug 24 '22 13:08 syuilo

外部ライブラリのクラスのインスタンスとかはどうやって注入するんだろう

文字列指定でcontainerに値を登録 & serviceにinjectできるっぽい

syuilo avatar Sep 06 '22 14:09 syuilo

やっていく https://github.com/misskey-dev/misskey/tree/di

syuilo avatar Sep 06 '22 14:09 syuilo

外部ライブラリのクラスのインスタンスとかはどうやって注入するんだろう

文字列指定でcontainerに値を登録 & serviceにinjectできるっぽい

正しい使い方なのか(外部ライブラリのクラスのインスタンスを注入する目的を想定しているのか)は謎

syuilo avatar Sep 06 '22 14:09 syuilo

テスト書くときはどうすんだこれ

syuilo avatar Sep 06 '22 15:09 syuilo

tasukete

syuilo avatar Sep 06 '22 15:09 syuilo

全然情報がない

syuilo avatar Sep 06 '22 16:09 syuilo

テストの際に特定のserviceだけモックに置き換えるのってどうするんだ

syuilo avatar Sep 06 '22 16:09 syuilo

ンニャゴゴゴゴゴゴゴゴ

syuilo avatar Sep 06 '22 16:09 syuilo

多分これ https://stackoverflow.com/questions/61658973/mocking-typedi-service-with-jest

syuilo avatar Sep 06 '22 16:09 syuilo

特定のメソッドだけ差し替えるのは出来ないの

syuilo avatar Sep 06 '22 16:09 syuilo

Nest.jsのDI部分だけを利用することもできそう

  • https://docs.nestjs.com/fundamentals/platform-agnosticism
  • https://docs.nestjs.com/standalone-applications

これなら一般的なRESTサービスとはちょっと違うMisskeyでも使えそう

syuilo avatar Sep 09 '22 08:09 syuilo

Nest使うか...

syuilo avatar Sep 10 '22 17:09 syuilo

やった

syuilo avatar Sep 17 '22 18:09 syuilo