From ae88da17280f8efe54cd05eea4063ed29ee8a105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B9=AF=E6=9C=AC=20=E9=96=8B?= Date: Wed, 16 Aug 2023 07:51:14 +0000 Subject: [PATCH] =?UTF-8?q?Merged=20PR=20331:=20UnitTest=E3=83=A6=E3=83=BC?= =?UTF-8?q?=E3=83=86=E3=82=A3=E3=83=AA=E3=83=86=E3=82=A3=E3=81=AE=E5=86=85?= =?UTF-8?q?=E9=83=A8=E7=9A=84=E3=81=AA=E4=BB=95=E7=B5=84=E3=81=BF=E3=82=92?= =?UTF-8?q?=E6=94=B9=E5=96=84=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 概要 [Task2418: UnitTestユーティリティの内部的な仕組みを改善する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2418) - 上書きするメソッド名を型から取得するよう修正 ## レビューポイント - 修正内容として妥当か - 懸念点がないか ## 動作確認状況 - npm run testで成功 --- dictation_server/src/common/test/overrides.ts | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/dictation_server/src/common/test/overrides.ts b/dictation_server/src/common/test/overrides.ts index a24758c..e791d1c 100644 --- a/dictation_server/src/common/test/overrides.ts +++ b/dictation_server/src/common/test/overrides.ts @@ -1,5 +1,10 @@ -import { ConflictError } from '../../gateways/adb2c/adb2c.service'; +import { + AdB2cService, + ConflictError, +} from '../../gateways/adb2c/adb2c.service'; +import { SendGridService } from '../../gateways/sendgrid/sendgrid.service'; import { User, newUser } from '../../repositories/users/entity/user.entity'; +import { UsersRepositoryService } from '../../repositories/users/users.repository.service'; // ### ユニットテスト用コード以外では絶対に使用してはいけないダーティな手段を使用しているが、他の箇所では使用しないこと ### @@ -19,12 +24,11 @@ export const overrideAdB2cService = ( ) => Promise<{ sub: string } | ConflictError>; }, ): void => { - const { createUser } = overrides; // テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得 - const obj = (service as any).adB2cService; - if (createUser) { - Object.defineProperty(obj, createUser.name, { - value: createUser, + const obj = (service as any).adB2cService as AdB2cService; + if (overrides.createUser) { + Object.defineProperty(obj, obj.createUser.name, { + value: overrides.createUser, writable: true, }); } @@ -58,24 +62,18 @@ export const overrideSendgridService = ( ) => Promise; }, ): void => { - const { - createMailContentFromEmailConfirm, - createMailContentFromEmailConfirmForNormalUser, - sendMail, - } = overrides; - // テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得 - const obj = (service as any).sendgridService; - if (sendMail) { - Object.defineProperty(obj, sendMail.name, { - value: sendMail, + const obj = (service as any).sendgridService as SendGridService; + if (overrides.sendMail) { + Object.defineProperty(obj, obj.sendMail.name, { + value: overrides.sendMail, writable: true, }); } else { // [重要] // sendMailだけは外部に対する送信を行ってしまう & 失敗によりメールアドレス自体の信頼度が変動してしまうため、 // overrideした場合には"必ず"偽物の呼び出しになるようにしておく - Object.defineProperty(obj, sendMail.name, { + Object.defineProperty(obj, obj.sendMail.name, { value: async () => { return; }, @@ -83,19 +81,19 @@ export const overrideSendgridService = ( }); } - if (createMailContentFromEmailConfirm) { - Object.defineProperty(obj, createMailContentFromEmailConfirm.name, { - value: createMailContentFromEmailConfirm, + if (overrides.createMailContentFromEmailConfirm) { + Object.defineProperty(obj, obj.createMailContentFromEmailConfirm.name, { + value: overrides.createMailContentFromEmailConfirm, writable: true, }); } - if (createMailContentFromEmailConfirmForNormalUser) { + if (overrides.createMailContentFromEmailConfirmForNormalUser) { Object.defineProperty( obj, - createMailContentFromEmailConfirmForNormalUser.name, + obj.createMailContentFromEmailConfirmForNormalUser.name, { - value: createMailContentFromEmailConfirmForNormalUser, + value: overrides.createMailContentFromEmailConfirmForNormalUser, writable: true, }, ); @@ -114,12 +112,11 @@ export const overrideUsersRepositoryService = ( createNormalUser?: (user: newUser) => Promise; }, ): void => { - const { createNormalUser } = overrides; // テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得 - const obj = (service as any).usersRepository; - if (createNormalUser) { - Object.defineProperty(obj, createNormalUser.name, { - value: createNormalUser, + const obj = (service as any).usersRepository as UsersRepositoryService; + if (overrides.createNormalUser) { + Object.defineProperty(obj, obj.createNormalUser.name, { + value: overrides.createNormalUser, writable: true, }); }