title: how to write Junit test case for spring boot rest controller which uses mongodb for data persist
body: <p>I am trying to write junit test cases for my spring boot controller.</p>
  
  <p>I have two API getUser and AddUser, these APIs talk to mongotemplate over dao to put the data in mongo DB and get the data from  mongo DB.</p>
  
  <p>I have  MongoConfiguration class(it has server address, port password etc)  is configured @Value by property file which is configured through <strong>@PropertySource</strong>  </p>
  
  <p>mongo template is created with details reading from <strong>@Autowired</strong> mongoconfig class. </p>
  
  <p>when I write junit test case and tested,  it was using actual mongoDB which was configured for all developers through standard properties file, so for my testing I want to use some kind of embedded mongo to mock the mongo db template</p>
  
  <p>So how to avoid using my actual mongodb during my junit test cases </p>
  
  <p>This is my below code which is working with actual db</p>
  
  <pre><code>public class UserControllerTest extends AbstractTest {
     @Override
     @Before
     public void setUp() {
        super.setUp();
     }
     @Test
     public void createProduct() throws Exception {
         User user =  new User();
         user.setName("UnitTest");
  
        String inputJson = super.mapToJson(user);
        String uri = "/iot/user/createuser";
        MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(uri)
           .contentType(MediaType.APPLICATION_JSON_VALUE)
           .content(inputJson)).andReturn();
  
        int status = mvcResult.getResponse().getStatus();
        assertEquals(201, status);
  
     }
  }
  </code></pre>