在Junit实现中模拟假冒客户

时间:2018-12-09 09:30:15

标签: spring-boot junit mockito spring-cloud-feign feign

我一直试图在Spring Boot实现中模拟来自Services的伪装客户端调用,以编写Junit测试用例。

//Service code
@Autowired
private PersonClient personClient;

//Using the personClient
public Person someMethod(){
    //Interface defined with URL and all defination
    Person person = personClient.getPerson();
}

//Service testing bean

@RunWith(MockitoJUnitRunner.class)
public Class ServiceTest{

    @Mock
    public PersonClient mockPersonClient;

    @Test
    public someTestClient(){

        when(mockPersonClient.getPerson()).return(new Person("name",12));
        Person person = mockPersionClient.getPerson();
        assertEquals(new Person("name",12), person);

    }

}

上面没有工作,我是伪装客户端的新手,因此不确定如何模拟伪装客户端接口。

还有其他方法可以实现上述目的。

1 个答案:

答案 0 :(得分:2)

它可能正在工作,我假设您的Person类未定义哈希码并等于方法?如果您尚未定义哈希码和等于方法,甚至assertEquals(new Person(“ name”,12),new Person(“ name”,12))都会失败。

要使测试正常工作,您可以定义哈希码和等号,或者您始终可以将测试方法替换为:

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