REST API integration – an example

Spring MVC provides an integration testing utility named MockMvc. We can use this to write an integration test for REST API controller classes. Let's see how this works for the /account/<accountId> endpoint of the AccountController class:

package com.dineshonjava.bookshop.accountservice;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import com.dineshonjava.bookshop.accountservice.controller.AccountController;
import com.dineshonjava.bookshop.accountservice.domain.Account;
import com.dineshonjava.bookshop.accountservice.repository.AccountRepository;

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = AccountController.class)
public class AccountControllerIntegrationTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private AccountRepository accountRepository;
@Test
public void shouldReturnFullName() throws Exception {
Account rushika = new Account(1003, "Rushika Rajput", "Noida", "9832XXX23", "[email protected]");
given(accountRepository.findAccountByAccountId(10003)).willReturn(rushika);
mockMvc.perform(get("/account/10003"))
.andExpect(content().string("Hello Rushika Rajput!"))
.andExpect(status().is2xxSuccessful());
}
}

In the preceding integration test class, we defined a test method for the findAccountById() method of the AccountController class by using the MockMvc framework. In the preceding class, we used the @WebMvcTest annotation to tell Spring which controller we're testing. We also used the @MockBean annotation to mock the AccountRepository class in our Spring context.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.220.38.8