问题是验证这种概念/功能是否存在于任何语言的任何测试框架中
案例
我有A类,其中包括B类。
在对类A的测试中,我触发了方法A,并且由于类B->此处的覆盖范围计算为A和B
2个问题
- A(如果我不计算CC,我需要如何使我的CC工具不计算CC直接测试B类
- B( 有没有办法做到这一点嘲笑然后设置嘲笑的行为
您应该能够通过将类B的依赖项注入到类A中来实现这一点,这样您就能够提供类B的mock而不是真实的东西。例如:
class A {
function constructor (B classB) {
this.B = B; // now do stuff with it
}
}
这与相反
class A {
function constructor () {
this.B = new B(); // now do stuff with it
}
}
因此,当您进行测试时,您向测试中的类a提供一个类B的模拟,然后您就不会在代码覆盖率报告中覆盖类B了。
话虽如此,代码覆盖率并不是最好的衡量标准。这是一个很酷的工具,可以知道你是否错过了要测试的代码区域,但它是一个容易玩的指标,它不能取代经过深思熟虑的测试,这些测试可能多次覆盖同一代码区域。
此外,重要的是要考虑您是在编写单元测试还是实现测试。这是有区别的。根据我的经验,只有在需要在测试中排除集成的情况下,模拟代码才有意义。否则,通过代码的公共入口点进行测试,以获得更完整、更易于维护的单元测试。