Skip to content
intermediate Phase · Testing

Controller Testing

Test REST controllers with MockMvc or WebTestClient.

40m
0 problems
Topic Progress 0%

Controller Testing

MockMvc Test

@WebMvcTest(ProductController.class)
class ProductControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private ProductService productService;

    @Test
    void shouldReturnProduct() throws Exception {
        when(productService.getById(1L))
            .thenReturn(new Product(1L, "Laptop"));

        mockMvc.perform(get("/api/products/1"))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.name").value("Laptop"));
    }
}

Testing Strategies

Testing Pyramid

     /  E2E  \
    /----------\
   / Integration \
  /----------------\
 /      Unit        \
/--------------------

Test Types

  • Unit: Individual components
  • Integration: Component interactions
  • E2E: Full user workflows
  • Performance: Load/stress testing

Best Practices

  • Write tests first (TDD)
  • Aim for 80% coverage
  • Test edge cases
  • Keep tests fast and isolated

Key Points

  • Understanding Controller Testing is essential for production systems
  • Always consider scalability and maintainability
  • Test thoroughly before deploying to production
  • Monitor performance and set up alerting

Common Patterns

  1. Validation: Always validate input at the boundary
  2. Error Handling: Use structured error responses
  3. Logging: Log key events for debugging
  4. Testing: Unit, integration, and load tests
  5. Documentation: Keep docs updated with code changes

Practice Problems

0 / 2 solved
Controller Testing Edge Cases

Identify and handle edge cases for Controller Testing. What happens under high load, with invalid input, or during failures?

Solution
// Edge case handling:
// 1. Null/empty input -> validation
// 2. High load -> rate limiting, queuing
// 3. Failures -> retries, circuit breaker
// 4. Concurrent access -> locks, idempotency
Controller Testing Testing Strategy

Write a testing strategy for Controller Testing. Include unit tests, integration tests, and performance tests.

Solution
// Test plan:
// - Unit: 80% coverage target
// - Integration: API contracts
// - Performance: latency, throughput
// - Chaos: failure injection

Quiz

1. @WebMvcTest loads?

Question 1 options

2. @WebMvcTest excludes?

Question 2 options

3. What is a common mistake when implementing Controller Testing?

Question 3 options

Flashcards

Question

@WebMvcTest loads?

Answer

Only web layer (controllers)

Question

@WebMvcTest excludes?

Answer

Services, repositories

Question

Controller Testing best practices

Answer

Follow SOLID principles, write clean code, test thoroughly, document decisions, and monitor in production.

Revision Notes

Key Takeaways

  • 1. @WebMvcTest: web layer only
  • 2. MockMvc: simulate HTTP requests
  • 3. @MockBean for service mocking
  • 4. Test status, body, headers

Interview Tips

  • Write controller tests
  • Use @WebMvcTest

Cheat Sheet

Controller Testing

  • @WebMvcTest: web layer only
  • MockMvc: simulate HTTP
  • @MockBean: mock services
  • Test: status, body, headers