コントローラーのプライベート メソッドを呼び出している typescript コントローラーのパブリック メソッドをテストしていますが、カバレッジを確認すると、プライベート メソッドがカバーされていないことがわかりました。以下はサンプルコードです。内部でプライベート メソッド transformUserActivity を呼び出して応答データを変換するコントローラーの readActivity を呼び出しています。コード カバレッジを見ると、transformUserActivity がカバーされていないと表示されます。
テスト コード audtiController.test.ts
import { AuditController } from '../src/auditController'
import { MxGroup } from "isdk"
let auditControllerInstance: AuditController
describe('Audit Test Suit', () => {
test('Response Test', () => {
mxGroup.readUserActivites = jest.fn(() => {
return new Promise((resolve, reject) => {
resolve(require('./__mockdata__/activityAuditData'))
})
})
auditControllerInstance = AuditController.getInstance()
let activityTypes = []
let users = [{ "id": "dadfq1daff12" }]
let fromTime = 1575138600000
let toTime = 1576002599999
auditControllerInstance.readActivity(users, fromTime, toTime, activityTypes).then(data => {
expect(data).toMatchSnapshot()
})
})
})
コントローラー コード auditController.ts
@transformError()
readActivity (users: UserIdentity[], fromTime: number, toTime: number, type?: string[]) {
const request = this.mxGroup.readUserActivites(users, fromTime, toTime, type)
this.currentRequest = request
return new Promise((resolve, reject) => {
request.then((activities: UserActivityLog[]) => {
resolve(this.transformUserActivity(activities))
}).catch(reject)
})
}
private transformUserActivity(activities: UserActivityLog[]) {]
activities.forEach((activity: UserActivityLog) => {
if (activity.activities) {
activity.activities.forEach((act: CUserActivityLogEntry) => {
let activity_detail: object = null
try {
activity_detail = this.transformClientPostLogAction(act.detail)
} catch (e) {
console.log(e)
}
act.activity_detail = activity_detail
this.transformCommonInfo(act.detail, activity_detail)
});
}
})
return activities
}