我正在尝试为Feign客户端的实现编写单元测试。我不确定该怎么做,所以我用谷歌搜索并遇到了this答案,可接受的答案是以下代码段:

@Test
public someTestClient(){
    Person expectedPerson = new Person("name",12));
    when(mockPersonClient.getPerson()).return(expectedPerson);
    Person person = mockPersionClient.getPerson();
    assertEquals(expectedPerson, person);
}


我不明白为什么这是一个有用的测试,或者在什么情况下,除了Person构造函数有问题之外,该测试可能会失败。这个测试实质上不是等同于:

Person person = new Person("a", 1)
Person expectedPerson = new Person("a", 1)
assertEquals(person, expectedPerson)


我知道单元测试应该单独测试功能。此测试是否可以确保mockPersonClient在运行时存在?

最佳答案

我们可以将模拟对象配置为在对该模拟对象调用方法时始终返回硬编码的伪造对象。

在此示例中,配置为mockPersonClient.getPerson()的OP返回了伪造的Person,但是他只是想知道为什么伪造的人在呼叫mockPersonClient.getPerson()时未按配置返回。我认为他显示的代码示例只是为了证明这个问题。这并不意味着他实际上写了单元测试代码来测试某些生产代码。

10-07 23:55