我正在监视一个像:
这样的对象@Spy
@InjectMocks
private final A a= new A()
在测试用例中我断言A对象的属性。 间谍对象意味着调用实际方法,在spyed对象的属性上断言是否正确?
答案 0 :(得分:0)
从技术上讲它会起作用,但我建议反对它,模拟价值对象通常是一个坏主意(甚至是反模式)。
只有在一些非常具体的边缘情况下,才需要@Spy
和@InjectMocks
的组合。大多数时候不需要它,这样的测试显示了一个设计测试代码中的问题。
相反,只需创建一个真实对象,根据需要注入模拟并直接在测试对象上声明属性。一个好的间谍用法将验证两个协作对象之间是否存在交互。