Skip to main content

How to test Microservices' Controller with mokito and Junit

Add Dependency In your project

----------------------------------------------------

compileOnly 'org.projectlombok:lombok'

annotationProcessor 'org.projectlombok:lombok'


testImplementation group: 'junit', name: 'junit'

testImplementation group: 'org.mockito', name: 'mockito-all', version: '1.10.19'


implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'

implementation 'org.springframework.boot:spring-boot-starter-web'

developmentOnly 'org.springframework.boot:spring-boot-devtools'

testImplementation 'org.springframework.boot:spring-boot-starter-test'




=====================================================

 package com.technoidentity.agastya;


import static org.junit.Assert.assertNotNull;

import static org.junit.jupiter.api.Assertions.assertEquals;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;

import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;

import org.junit.jupiter.api.Order;

import org.junit.jupiter.api.Test;

import org.junit.jupiter.api.TestMethodOrder;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.http.HttpStatus;

import org.springframework.http.MediaType;

import org.springframework.mock.web.MockHttpServletResponse;

import org.springframework.test.context.TestPropertySource;

import org.springframework.test.context.junit4.SpringRunner;

import org.springframework.test.web.servlet.MockMvc;

import org.springframework.test.web.servlet.MvcResult;


@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)

@RunWith(SpringRunner.class)

@AutoConfigureMockMvc

@TestPropertySource(locations = "classpath:application-local.yml")

@TestMethodOrder(OrderAnnotation.class)

class AgastyaServiceApplicationTests {


@Autowired

private MockMvc mvc;


@Test

void contextLoads() {

}


@Test

@Order(1)

public void getAllTelemetryEventsTest() throws Exception {


MvcResult result = mvc.perform(get("/agastya/telemetry")).andReturn();

// MockHttpServletRequest req=result.getRequest();

MockHttpServletResponse resp = result.getResponse();

assertNotNull(resp.getContentAsString());

assertEquals(HttpStatus.OK.value(), resp.getStatus());

}

@Test

@Order(1)

public void getAllTelemetryIfEventsTest() throws Exception {


MvcResult result = mvc.perform(get("/agastya/telemetry")).andReturn();

// MockHttpServletRequest req=result.getRequest();

MockHttpServletResponse resp = result.getResponse();

assertNotNull(resp.getContentAsString());

assertEquals(HttpStatus.OK.value(), resp.getStatus());

}



@Test

@Order(2)

public void getTelemetryEventByIdTest() throws Exception {

MvcResult result = mvc.perform(get("/agastya/telemetry/2")).andReturn();

MockHttpServletResponse resp = result.getResponse();

assertEquals(HttpStatus.OK.value(), resp.getStatus());

assertNotNull(resp.getContentAsString());

System.out.println(resp.getContentAsString());

System.out.println(resp.getStatus());

}


@Test

@Order(3)

public void createTelemetryEventTest() throws Exception {


MvcResult result = mvc

.perform(post("/agastya/telemetry")

.header("Content-Type", "application/json")

//.contentType(MediaType.APPLICATION_JSON)

.content("{\"deviceId\":\"14\",\"timestamp\":null,\"telemetryKey\":\"Krishna\",\"telemetryValue\":\"Joti\"}"))

.andReturn();

MockHttpServletResponse resp = result.getResponse();

assertNotNull(resp.getContentAsString());

assertEquals(HttpStatus.OK.value(), resp.getStatus());

        System.out.println("Hello prine");

}


     @Test

     @Order(4)

     public void updateTelemetryEvent() throws Exception {

    MvcResult result=mvc.perform(put("/agastya/telemetry/14")

    .contentType(MediaType.APPLICATION_JSON)

    .content("{\"deviceId\":\"14\",\"timestamp\":null,\"telemetryKey\":\"Krishna\",\"telemetryValue\":\"Joti\"}"))

    .andReturn();

    MockHttpServletResponse resp = result.getResponse();

  assertNotNull(resp.getContentAsString());

  assertEquals(HttpStatus.OK.value(), resp.getStatus());

     

     }

    @Test

    @Order(5)

  public void deleteTelemetryEventTest() throws Exception {

  MvcResult result = mvc.perform(delete("/agastya/telemetry/14")).andReturn();

  MockHttpServletResponse resp = result.getResponse();

  assertEquals(HttpStatus.OK.value(), resp.getStatus());

  assertNotNull(resp.getContentAsString());

  System.out.println(resp.getContentAsString());

  }

    

    @Test

@Order(6)

public void createTelemetryTest() throws Exception {


MvcResult result = mvc

.perform(post("/agastya/telemetry")

.header("Content-Type", "application/json")

//.contentType(MediaType.APPLICATION_JSON)

.content("{\"deviceId\":\"14\",\"timestamp\":null,\"telemetryKey\":\"Krishna\",\"telemetryValue\":\"Joti\"}"))

.andReturn();

MockHttpServletResponse resp = result.getResponse();

assertNotNull(resp.getContentAsString());

assertEquals(HttpStatus.OK.value(), resp.getStatus());

        System.out.println("Hello prine");

}

    

    

    

    

    

    

    


  /*

  @Order(6)

  public void deleteAllTelemetryEventTest() throws Exception {

  MvcResult result = mvc.perform(delete("/agastya/telemetry")).andReturn();

  MockHttpServletResponse resp = result.getResponse();

  assertEquals(HttpStatus.OK.value(), resp.getStatus());

  assertNotNull(resp.getContentAsString());

  System.out.println(resp.getContentAsString());

  }*/

    

}


Comments

Popular posts from this blog

Generate Documentation for Spring Boot API with swagger and Open API 3

 ðŸ˜‚ How to Generate Documentation for Spring Boot API project Make sure your Project having a swagger or open API 3 Dependency then only you get proper Documentation for your Service. ---------------------------------------------------------------------------- Every method or API above you have to Write Like that then only you get proper Documentation If you do everything in your Application and Run your Application and go to browse and search. . http://localhost:8080/v3/api-docs/ if you want to learn more go with this one.  Open API-3   1. For Return List of Object then you have to use this API operation  @Operation(summary = "This will fetch List of Patient Detailas base on Hospital Name") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Successfully fetch All Patient Details from Database ", content = {  @Content(mediaType = "application/json" ,array = @ArraySchema(schema =@Schema(implementation =PatientDe...

Top 10 website for IT Job | Software developer job apply | Job platfrom to apply Job | Software Developer Job .

                        Top 10 website for IT Job If you want a job in an IT or software company then this blog for you. I will give you the top 10 websites where you can apply the job for the software industry. It is a very good website to apply for a job for a software company.

#FibonacciNumberSeries Write a program of Fibonacci Number Series|| Fib...

Fibonacci Number Series ============================================ 0 1 1 2 3 5 8 13............. a=0; b=1; i=2; printf(a,b); while(i<=n){ c=a+b; printf(c); a=b; b=c; i++; } =========================================================================== import java.util.Scanner; class Fibonacci { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int a=0,b=1,c; System.out.print(a+" "+b); for(int i=2;i