打字稿中私有方法的测试
Testing of private methods in typescript
假设我有以下打字稿 class:
class MyComponent {
private something: number;
constructor () {
this.something = 0
this.incrementSomething()
}
private incrementSomething () : number {
return this.something++
}
}
export default MyComponent
我的目标是使用 jest
对其进行测试,但我的问题多于答案。
- 这是一个糟糕的设计模式吗?
- 私有方法要不要测试? (网上众说纷纭,难以抉择)
- 我是否应该忽略此设置的
jest coverage
,因为它会将 class 报告为未经测试?
- 我是否应该创建一个 public 方法并在其中调用我的私有方法?
我第一次尝试使用typescript
中的private
方法并尝试测试它们,所以请耐心等待:)
我认为 SO 不是解决此类问题的理想场所,因为您要问的大部分内容都是基于意见的。但是,您可以断言该对象是 any
以便进行一些测试:
class MyComponent {
private something: number;
constructor () {
this.something = 0
this.incrementSomething()
}
private incrementSomething () : number {
return this.something++
}
}
const thingIWantToTest = new MyComponent();
console.log((thingIWantToTest as any).something); // works
console.log(thingIWantToTest.something); // type error
假设我有以下打字稿 class:
class MyComponent {
private something: number;
constructor () {
this.something = 0
this.incrementSomething()
}
private incrementSomething () : number {
return this.something++
}
}
export default MyComponent
我的目标是使用 jest
对其进行测试,但我的问题多于答案。
- 这是一个糟糕的设计模式吗?
- 私有方法要不要测试? (网上众说纷纭,难以抉择)
- 我是否应该忽略此设置的
jest coverage
,因为它会将 class 报告为未经测试? - 我是否应该创建一个 public 方法并在其中调用我的私有方法?
我第一次尝试使用typescript
中的private
方法并尝试测试它们,所以请耐心等待:)
我认为 SO 不是解决此类问题的理想场所,因为您要问的大部分内容都是基于意见的。但是,您可以断言该对象是 any
以便进行一些测试:
class MyComponent {
private something: number;
constructor () {
this.something = 0
this.incrementSomething()
}
private incrementSomething () : number {
return this.something++
}
}
const thingIWantToTest = new MyComponent();
console.log((thingIWantToTest as any).something); // works
console.log(thingIWantToTest.something); // type error