Typescriptでprivateメソッドをテストしたかったが単純にメソッドにアクセスしようとすると怒られたので、
どうやったらテストできるか調べてみた。
How
以下の例で見ていく。
hoge.ts
export default class Hoge {
private add(a: number, b: number) number {
return a + b
}
}
hoge.spec.ts
import Hoge from './hoge'
it("returns the addition of two numbers", () => {
const hoge = new Hoge()
expect(hoge.add(1, 2)).toBe(3)
})
テストを実行すると、
src/hoge.spec.ts (5,15): Property 'add' is private and only accessible within class 'Hoge'.
と怒られる。
解決方法は2つあって、
-
anyにキャストして
.hoge
でアクセスする(hoge as any).add(1, 2)
-
プライベートなメソッドに
["hoge"]
でアクセスするhoge["add"](1,2)