Rhyztech blog

TypeDIを使ってインターフェースの型に具象インスタンスを注入する方法

tech

TypeDIを使ってインターフェースの型に具象インスタンスを注入する方法として、@injectデコレータにコンストラクタを持つ具象クラスを渡す方法があります。 例えば次の通りです。

interface HogeInterface {
  play(): string;
}

class Hoge implements HogeInterface {
  public play() {
    return "hoge";
  }
}

// @Inject(typeFn: (type?: never) => Constructable<unknown>) で具象クラスを注入する
class Service() {
  constructor(@Inject(() => Hoge) private hoge: HogeInterface) {}
}

このクラスに対してモックインスタンスを注入する場合は次の通りです。

const HogeMock = Hoge as jest.Mock<Hoge>;
Container.set(Hoge, new HogeMock());

Copyright 2021, rhyztech. All Rights Reserved.