我正在为类Export做一些测试 我需要模拟一个方法,所以我做了一个mockito(我是Mockito的新手)
public Class ExportServiceImpl implements ExportService{
@Autowired
Service service
public void export(){
String exportString = service.getPath();
domoreStuff() ....
}
和
public Class ServiceImpl implements Service(){
public String getPath(){
return "thePath";
}
}
我需要模拟getPath()方法,所以我在TestNG中做了
public class ExportTestNG(){
public textExport(){
Service serviceMock = Mockito.mock(Service.class);
Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
System.out.println("serviceMock.getData() : " + serviceMock.getData()); // prints "theNewPath", OK
exportService.export(); // the getData() is not the mockito one
}
}
我可能没有与mockito相关,我可能也不知道它是如何工作的。 有什么想法吗?
答案 0 :(得分:4)
您可以使用Mockito为您注入模拟,并避免添加setter方法。
@RunWith(MockitoJUnitRunner.class)
public class ExportTestNG(){
@InjectMocks
private ExportServiceImpl exportService;
@Mock
private Service serviceMock;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
}
public textExport(){
Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
exportService.export();
}
}
答案 1 :(得分:0)
您需要将模拟服务连接到exportService对象。 如果您有服务成员变量的setter,请执行以下操作:
exportService.setService(serviceMock);// add this line.
exportService.export();
如果您没有安装者,则需要在致电出口前进行接线。 选项包括: