Tôi có các lớp Java sau:phương pháp Nested chế giễu trong Mockito
public class A
{
@Autowired
private B b;
public int aFn()
{
int something = b.bFn();
}
}
public class B
{
@Autowired
private C c;
public int bFn()
{
int something = c.cFn();
}
}
public class C
{
public int cFn()
{
return 231;
}
}
Và thử nghiệm sau đây sử dụng Mockito để kiểm tra đoạn code trên:
public class test
{
@Autowired
private A a;
private C c;
@Test
public void testA()
{
c = mock(C.class);
when(c.cFn(),anyInt()).thenReturn(something);
assertEquals(0, a.aFn());
}
}
Khi tôi gỡ lỗi Testa, tôi thấy rằng thực c.Cfn() được thực hiện, không được thực thi. Có điều gì tôi đang làm không chính xác ở đây không? Xin vui lòng giúp đỡ!
Tôi muốn khai c.cFn, chứ không phải b.bFn. Điều gì nên được thực hiện cho điều đó? – user1471283
Đó là một thực tế không tốt. Bài kiểm tra đơn vị nên kiểm tra một lớp trong sự cô lập của những người khác. Nhưng nếu bạn muốn điều đó, sau đó tạo ra một giả lập C, tạo ra một B và tiêm C giả bên trong nó, sau đó tạo ra một A và tiêm B bên trong nó. 'A -> B -> mockC'. –
Cảm ơn. Vui lòng sửa đổi câu trả lời của bạn theo đó. – user1471283