Я новичок в материалах MockMVC и junit, поэтому мне нужна помощь, поэтому ситуация в том, что мне нужно смоделировать метод, в то же время высмеивая внешний метод, который содержит метод. Например, метод калькулятора (int a, int b), я смоделирую этот метод с двумя фиктивными значениями, и в этом методе есть другой метод, который выполняет некоторые другие проверки (скажем, некоторые внешние проверки).
Я могу издеваться над калькулятором основного метода до точки, где вызывается этот внешний метод, я использовал «Given (). WillReturn ()» для насмешки над основным методом (калькулятором) и другим «Given ( ) .willReturn () "оператор для имитации содержащего метода (проверки одного), но это дает мне исключение nullPointer. Поэтому мне нужно что-то, что могло бы помочь мне в этом, чтобы издеваться можно было упорядоченно.
public GuestRegistrationResponse registerGuest(SomeObject guestRegistrationRequest) throws Exception {
SomeObject guestRegistrationResponse = new SomeObject();
Folio folio = new Folio();
folio.setForename(guestRegistrationRequest.getForename());
folio.setEmail1(guestRegistrationRequest.getEmail());
folio.setCity(guestRegistrationRequest.getCity());
Result result = null;
result = (Result) sampleAPICall.executeExternalAPI(result,new Class[] { SomeObject.class, User.class, Another.class, Folio.class, FolioList.class },
Result.class);
if (result != null && result.getFolioList() != null ) {
guestRegistrationResponse.setFolioid(result.getFolioList().getFolio().getFolioId());
} else {
throw new ExternalException(result.getResult());
}
return guestRegistrationResponse;
}
Метод испытания
@RunWith(SpringRunner.class)
@WebMvcTest(value = ServiceImpl.class, secure = true)
public class TestServiceImpl {
@Autowired
MockMvc mockmvc;
@InjectMocks
ServiceImpl serviceImpl;
@Before
public void setUp() {
// We would need this line if we would not use MockitoJUnitRunner
MockitoAnnotations.initMocks(this);
// Initializes the JacksonTester
JacksonTester.initFields(this, new ObjectMapper());
}
@Test
public void testRegisterGuest() throws Exception {
SomeObject mockInput = new SomeObject();
mockInput.setCity("CITY");
mockInput.setEmail("test@test.com");
mockInput.setForename("FORENAME");
/* other datat is also collected*/
ExpectedResponse mockOutput = new ExpectedResponse();
mockOutput.setResult(true);
Result Result = new Result();
Result.setMessage("success");
Result.setStatus(true);
processTestThatMethod(mockInput, mockOutput, Result);
}
private void processTestThatMethod(SomeObject mockInput, ExpectedResponse mockOutput,
,Result result) throws Exception {
System.out.println("Inside processTestThatMethod");
given(serviceImpl.registerGuest(mockInput)).willReturn(mockOutput);
// what to do below ..
given(sampleAPICall.executeExternalAPI(any(Result.class),any(new Class[]{SomeObject.class, User.class, Another.class, Folio.class, FolioList.class}),any(Result.class))).willReturn(result);
}
}
Отредактировал код @Sachin rai