代码之家  ›  专栏  ›  技术社区  ›  Kristesiashvili

如果不能捕获源代码中的更改,那么用mock编写单元测试有什么意义呢?

  •  0
  • Kristesiashvili  · 技术社区  · 2 年前

    我最近开始写单元测试。当我尝试测试角度组件的服务时,我通常会模拟它。因此,如果有人删除了源代码中使用服务方法的代码行,单元测试仍然通过。如果不能捕获这种类型的代码/逻辑消失,那么用mock编写单元测试有什么意义?

    0 回复  |  直到 2 年前
        1
  •  0
  •   alezhu    2 年前

    理想情况下,您不必模拟测试中的服务。您必须(或可能)模拟此服务的依赖关系,或者有时模拟此服务的某些方法。

    当你测试服务时——你测试了所有公共服务方法。如果有人从服务中删除公共方法,服务的测试将失败。

    但如果您测试另一个使用服务的类,您只测试该类的所有公共方法。那门课的考试可能不会不及格。

        2
  •  0
  •   slim    2 年前

    如果您正在为组件编写测试,并希望确保调用模拟服务,可以通过以下方式执行:

    expect(myMockedService.theMethodIExpectToBeCalled).toHaveBeenCalled()
    

    如果执行预期调用的代码行被删除,该预期将失败。