在单元测试中模拟依赖

Mocking dependencies in unit test

我的代码结构如下:

class A 依赖于 class B,它获取另一个 class C 的实例,后者又包含一个列表 l。

我需要对 A 中获取列表 l 并更新它的方法进行单元测试。

我不知道该怎么办?我应该模拟一个 List 并将其放入 C 的模拟中,然后验证其更新。我不确定这是否可能。

您想在 class A 中测试方法 M。方法 M 对 class B 做了棘手的事情,以获得修改后的 List<E> I。

根据您的 class 设计,您可以按如下方式进行:

  • 创建一个 class B 的模拟,以便用于“掌握 I”的方法 returns 一些有趣的真实列表 I
  • 将这个 mock 注入你的 class-under-test A
  • 调用你的method-under-test M
  • 断言对列表的更改符合预期。

如果在列表中创建 class E 的元素很复杂,您可以模拟这些元素,但没有必要模拟列表本身。