ドメインのstaticメソッドをmockする

ドメインのstaticメソッドをmockする

TDD

ドメインのファクトリメソッドを呼び出しているメソッドのテストをするときに、いい感じにmockする方法を学んだのでメモしておきます。

ドメインのstaticメソッドをmockする方法

Interface & Adapter層のGatewayでエンティティをドメインに変換する際に、ドメインの

Driverからデータを取得して、ドメインに変換するメソッドをテストする場合はこんな感じになります。

・NewsGateway.ts

・NewsGateway.test.ts

 

convertNewsの単体テストにおいて、Newsドメインにファクトリメソッドであるfromメソッドをmockする方法がわかりました。

まずspyOnでNewsドメインのfromメソッドをmockします。mockImplementation() 関数の引数は、以下のようになっています。

  • 第1引数:モックするメソッドの引数型
  • 第2引数:モックするメソッドの戻り値型
  • 第3引数:モックするメソッドの処理本体

この場合、第1引数は NewsEntity[] 型、第2引数はNews型、第3引数はNews型のオブジェクトを返す処理です。つまり、from() メソッドにNewsEntity[]型のエンティティを渡すと、常にnewsを返すように設定しています。

convertNewsはprivateメソッドなので、newsEntityを引数rにnewsGateway[‘convertNews’]の形で呼び出します。

あとは結果が正しいかと、mockしたfromメソッドが呼び出されたかを確認しています。