Merged PR 331: UnitTestユーティリティの内部的な仕組みを改善する
## 概要 [Task2418: UnitTestユーティリティの内部的な仕組みを改善する](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/2418) - 上書きするメソッド名を型から取得するよう修正 ## レビューポイント - 修正内容として妥当か - 懸念点がないか ## 動作確認状況 - npm run testで成功
This commit is contained in:
parent
924106d608
commit
ae88da1728
@ -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 { User, newUser } from '../../repositories/users/entity/user.entity';
|
||||||
|
import { UsersRepositoryService } from '../../repositories/users/users.repository.service';
|
||||||
|
|
||||||
// ### ユニットテスト用コード以外では絶対に使用してはいけないダーティな手段を使用しているが、他の箇所では使用しないこと ###
|
// ### ユニットテスト用コード以外では絶対に使用してはいけないダーティな手段を使用しているが、他の箇所では使用しないこと ###
|
||||||
|
|
||||||
@ -19,12 +24,11 @@ export const overrideAdB2cService = <TService>(
|
|||||||
) => Promise<{ sub: string } | ConflictError>;
|
) => Promise<{ sub: string } | ConflictError>;
|
||||||
},
|
},
|
||||||
): void => {
|
): void => {
|
||||||
const { createUser } = overrides;
|
|
||||||
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
||||||
const obj = (service as any).adB2cService;
|
const obj = (service as any).adB2cService as AdB2cService;
|
||||||
if (createUser) {
|
if (overrides.createUser) {
|
||||||
Object.defineProperty(obj, createUser.name, {
|
Object.defineProperty(obj, obj.createUser.name, {
|
||||||
value: createUser,
|
value: overrides.createUser,
|
||||||
writable: true,
|
writable: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -58,24 +62,18 @@ export const overrideSendgridService = <TService>(
|
|||||||
) => Promise<void>;
|
) => Promise<void>;
|
||||||
},
|
},
|
||||||
): void => {
|
): void => {
|
||||||
const {
|
|
||||||
createMailContentFromEmailConfirm,
|
|
||||||
createMailContentFromEmailConfirmForNormalUser,
|
|
||||||
sendMail,
|
|
||||||
} = overrides;
|
|
||||||
|
|
||||||
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
||||||
const obj = (service as any).sendgridService;
|
const obj = (service as any).sendgridService as SendGridService;
|
||||||
if (sendMail) {
|
if (overrides.sendMail) {
|
||||||
Object.defineProperty(obj, sendMail.name, {
|
Object.defineProperty(obj, obj.sendMail.name, {
|
||||||
value: sendMail,
|
value: overrides.sendMail,
|
||||||
writable: true,
|
writable: true,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// [重要]
|
// [重要]
|
||||||
// sendMailだけは外部に対する送信を行ってしまう & 失敗によりメールアドレス自体の信頼度が変動してしまうため、
|
// sendMailだけは外部に対する送信を行ってしまう & 失敗によりメールアドレス自体の信頼度が変動してしまうため、
|
||||||
// overrideした場合には"必ず"偽物の呼び出しになるようにしておく
|
// overrideした場合には"必ず"偽物の呼び出しになるようにしておく
|
||||||
Object.defineProperty(obj, sendMail.name, {
|
Object.defineProperty(obj, obj.sendMail.name, {
|
||||||
value: async () => {
|
value: async () => {
|
||||||
return;
|
return;
|
||||||
},
|
},
|
||||||
@ -83,19 +81,19 @@ export const overrideSendgridService = <TService>(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (createMailContentFromEmailConfirm) {
|
if (overrides.createMailContentFromEmailConfirm) {
|
||||||
Object.defineProperty(obj, createMailContentFromEmailConfirm.name, {
|
Object.defineProperty(obj, obj.createMailContentFromEmailConfirm.name, {
|
||||||
value: createMailContentFromEmailConfirm,
|
value: overrides.createMailContentFromEmailConfirm,
|
||||||
writable: true,
|
writable: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (createMailContentFromEmailConfirmForNormalUser) {
|
if (overrides.createMailContentFromEmailConfirmForNormalUser) {
|
||||||
Object.defineProperty(
|
Object.defineProperty(
|
||||||
obj,
|
obj,
|
||||||
createMailContentFromEmailConfirmForNormalUser.name,
|
obj.createMailContentFromEmailConfirmForNormalUser.name,
|
||||||
{
|
{
|
||||||
value: createMailContentFromEmailConfirmForNormalUser,
|
value: overrides.createMailContentFromEmailConfirmForNormalUser,
|
||||||
writable: true,
|
writable: true,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
@ -114,12 +112,11 @@ export const overrideUsersRepositoryService = <TService>(
|
|||||||
createNormalUser?: (user: newUser) => Promise<User>;
|
createNormalUser?: (user: newUser) => Promise<User>;
|
||||||
},
|
},
|
||||||
): void => {
|
): void => {
|
||||||
const { createNormalUser } = overrides;
|
|
||||||
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
// テストコードでのみ許される強引な方法でprivateメンバ変数の参照を取得
|
||||||
const obj = (service as any).usersRepository;
|
const obj = (service as any).usersRepository as UsersRepositoryService;
|
||||||
if (createNormalUser) {
|
if (overrides.createNormalUser) {
|
||||||
Object.defineProperty(obj, createNormalUser.name, {
|
Object.defineProperty(obj, obj.createNormalUser.name, {
|
||||||
value: createNormalUser,
|
value: overrides.createNormalUser,
|
||||||
writable: true,
|
writable: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user