OMDSCloud/dictation_server
湯本 開 415a76b6bf Merged PR 325: テストを最新化(アカウント登録)
## 概要
[Task2397: テストを最新化(アカウント登録)](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2397)

- アカウント登録のテストを最新化(元が無かったので実質新規追加)
- テスト時、外部サービスへの依存をMockに差し替える際のモデルケースを追加
  - `Object.defineProperty` を使って強引にメンバ変数をMock用オブジェクトへ上書きする方式
- migrationとEntityの定義内容が食い違っていた部分をmigration側に合わせるよう修正
  - 実質的にEntityの属性指定は通常実行時には使われないと思われたため、部分的にはテスト用に修正(※意図はコメント済)

## レビューポイント
- テスト時、AdB2cServiceやSendGridService等のDB以外のサービスをMockに差し替えて動かしているが、この方式に問題や懸念点はなさそうか
  - 例えば、`/app/dictation_server/src/features/users/test/utility.ts` に定義されている `makeTestingModuleWithAdb2c` のように構築時にoverrideする形式が既にあるが、そちらの方式でやるべきでは? 等
  - 上記方式ではなく `Object.defineProperty` で良いのでは?という提案を行っているのは、以下の理由
     - モジュール構築時に指定する方法だと依存してるサービス数によっては構築時の指定パラメータが膨大になってしまう懸念がある(3~4個のサービスと連携している場合、`makeTestingModuleWithXXX(...)` の引数指定がえらいことになりそう)
     - `Object.defineProperty` 形式だとテストケース内で必要なサービスを1個1個上書きしていく事が可能なので、汎用関数として切り出して各Serviceで利用できる
- 現状のテストケースとして妥当か
  - 例: SendGridの送信に失敗した場合は最終的にはリカバリを行う実装が入るが、現段階ではリカバリ処理がないためテスト記述なし
- Entityの属性を修正したが問題なさそうか、特にテスト用に指定した箇所があるが問題ないか

## 動作確認状況
- npm run testで成功
2023-08-14 06:52:13 +00:00
..