如何使用Jasmine单元测试来测试私有方法

3
我想在我的组件中调用一个私有方法。
私有方法:
  private test(): void {
     return true;
  }

"Spec It:" (规格说明)
  it('should call test method and return true', () => {
     const response = component.test();
     expect(response).toBeTruthy();
  });

问题:

提示信息:"属性 'test' 是私有的,只能在类“MyTestComponent”内部访问。"


2
为测试目的创建一个公共包装器? - Ronald
似乎这是设计上的。 - AngularM
为什么要测试私有方法?测试实现细节不是一个好主意,对吧?我认为你应该只测试公共方法,因为它是你组件的API。 - wprzechodzen
1个回答

3
您可以使用

标签


component['test']();
// OR in your component, add
callMethod() {
  this.test();
}

但如果是我,我会移除private属性。在Javascript中,没有private属性,只有作用域。

如果你想测试你的方法,但是无法测试,那就意味着你应该改变你的代码,而不是适应你的测试来测试你的代码。这就是如何获得简洁高效的代码。

(但再说一次,这只是我的个人看法)


我正在使用TypeScript。 - AngularM
2
仅仅因为 Typescript 编译成 Javascript,就不能使用私有函数?那我们完全可以放弃整个 Typescript 概念啊。 - user3588429

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接