㊙️
TypeScript + Jestでプライベートプロパティの異常系テストを書く
2021-08-29
TypeScript を使った Jest において、あるオブジェクトのプライベートプロパティにアクセスしたいときは、クラス自体をas anyでキャストしてしまうという無理やりな方法で対処する。(他にいい方法があれば教えて欲しい)
class Car {
constructor(private name: string) {}
showName() {
console.log(this.name);
}
}
test("The name is correct", () => {
const car = new Car("GMC");
expect((car as any).name).toBe("GMC");
});
ちなみに、読み取りではなく書き換えを行いたい場合は、同じくas anyを使う方法でもよいが、Object.definePropertyを使う方法もある。
test("The name is correct", () => {
const car = new Car("GMC");
// または(car as any).name = "CHEVROLET";
Object.defineProperty(car, "name", { value: "CHEVROLET" });
expect((car as any).name).toBe("CHEVROLET");
});