下面是示例代码,如果这个工作我可以在我的业务代码中使用相同的逻辑。
class A{
public String[] getString(String[] a){
System.out.println("called");
return a;
}}
class B{
A a;
public String[] getString(){
String[] ab = {"inside main class"};
a= new A();
return a.getString(ab);
}
}
单位:
public class test{
private MockMvc mockMvc;
@Mock
private A a;
@InjectMocks
private B b;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(b).build();
}
@Test
public void test2Object(){
String[] bc = {"mock main class"};
Mockito.when(a.getString(Mockito.any(String[].class))).thenReturn(bc);
System.out.println((b.getString())[0]);
}
}
应为o/p“mock主类”,但我得到的是“inside main class”
有没有人可以帮我解决这个问题。
1条答案
按热度按时间33qvvth11#
你正在注入一个A的Mock,但是在B的getString方法中,你正在创建一个新的A示例并在其上工作。删除它,模拟的版本将被调用:
我建议添加一个setter,以便在生产中可以以某种方式注入它。
更新
您的测试类应该像这样: