All,
Thanks for help. I am pretty new to Mockito, If I have a Service class, a controller class(which using that serivce by passing in a Map param), How can I mock that service method?
Helloworldservice.java
package service;
import java.util.Map;
public class Helloworldservice {
public String greeting() {
return "Hello, World";
}
public String greetingSB(Map<String, String> sb) {
return "Hello," + sb.get("name");
}
}
Helloworldcontroller.java
package controller;
import java.util.HashMap;
import java.util.Map;
import service.Helloworldservice;
public class Helloworldcontroller {
private Helloworldservice hservice;
public Helloworldcontroller() {
// TODO Auto-generated constructor stub
hservice = new Helloworldservice();
}
public String sayHello() {
return hservice.greeting();
}
public String sayHelloSB() {
Map<String, String> sb = new HashMap<String, String>();
sb.put("name", "somebody");
return hservice.greetingSB(sb);
}
}
HelloworldcontrollerTest.java
package unit.controller;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import controller.Helloworldcontroller;
import service.Helloworldservice;
@RunWith(MockitoJUnitRunner.class)
public class HelloworldcontrollerTest {
@InjectMocks
private Helloworldcontroller hcontroller;
private Helloworldservice hservice = new Helloworldservice();
@Mock
private Helloworldservice hservice_mock;
@Before
public void setup() {
hservice_mock = Mockito.spy(hservice);
/** I am not sure how to mock here for that param sb
Mockito.when(hservice_mock.greetingSB(.......))
.thenReturn("Hello, somebody");
**/
}
@Test
public void testGreeting() {
String h = hcontroller.sayHelloSB();
Assert.assertEquals(h, "Hello, sombody!!!");
}
}
The serice always returns null, I am not sure what is wrong.