Rumah > Java > javaTutorial > kaedah thenReturn() dalam contoh Mockito

kaedah thenReturn() dalam contoh Mockito

Mary-Kate Olsen
Lepaskan: 2025-01-27 00:07:07
asal
990 orang telah melayarinya

thenReturn() method in Mockito example

Senario: Mengejek Perkhidmatan untuk Menguji Pengawal

  1. Kod Permohonan Employee.java
package com.example.demo.model;

public class Employee {
    private String id;
    private String name;

    // Constructors, Getters, and Setters
    public Employee(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Salin selepas log masuk

EmployeeService.java

package com.example.demo.service;

import com.example.demo.model.Employee;
import org.springframework.stereotype.Service;

@Service
public class EmployeeService {
    public Employee getEmployeeById(String id) {
        // Simulate fetching employee from a database
        return new Employee(id, "Default Name");
    }
}

Salin selepas log masuk

EmployeeController.java

package com.example.demo.controller;

import com.example.demo.model.Employee;
import com.example.demo.service.EmployeeService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class EmployeeController {
    private final EmployeeService employeeService;

    public EmployeeController(EmployeeService employeeService) {
        this.employeeService = employeeService;
    }

    @GetMapping("/employees/{id}")
    public Employee getEmployee(@PathVariable String id) {
        return employeeService.getEmployeeById(id);
    }
}

Salin selepas log masuk
  1. Kod Ujian Unit Menggunakan thenReturn() EmployeeControllerTest.java
package com.example.demo.controller;

import com.example.demo.model.Employee;
import com.example.demo.service.EmployeeService;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;

class EmployeeControllerTest {

    @Mock
    private EmployeeService employeeService;

    @InjectMocks
    private EmployeeController employeeController;

    public EmployeeControllerTest() {
        MockitoAnnotations.openMocks(this); // Initialize mocks
    }

    @Test
    void testGetEmployee() {
        // Arrange: Use when().thenReturn() to mock service behavior
        when(employeeService.getEmployeeById("1")).thenReturn(new Employee("1", "John Doe"));

        // Act: Call the controller method
        Employee employee = employeeController.getEmployee("1");

        // Assert: Verify the returned object
        assertNotNull(employee);
        assertEquals("1", employee.getId());
        assertEquals("John Doe", employee.getName());

        // Verify the mocked service was called
        verify(employeeService, times(1)).getEmployeeById("1");
    }
}

Salin selepas log masuk

Penjelasan
bila().thenReturn():

Mengejek kelakuan employeeService.getEmployeeById("1") untuk mengembalikan objek Pekerja tertentu apabila dipanggil dengan "1".
Suntikan Ketergantungan:

@Mock mencipta olok-olok terhadap EmployeeService.

@InjectMocks menyuntik olok-olok EmployeeService ke dalam EmployeeController.

Sahkan:
verify(employeeService, times(1)).getEmployeeById("1") memastikan kaedah yang dipermainkan dipanggil sekali sahaja.

Penegasan:
Mengesahkan objek Pekerja yang dikembalikan terhadap nilai yang dijangkakan.

Output
Apabila ujian dilaksanakan:

Ia akan memanggil kaedah pengawal.

Perkhidmatan yang dipermainkan akan mengembalikan objek Pekerja yang ditikam.
Ujian akan lulus jika:
Objek Pekerja yang dikembalikan sepadan dengan nilai yang dijangkakan.

Kaedah perkhidmatan yang diejek telah dipanggil bilangan kali yang dijangkakan.

Ini ialah cara yang bersih dan praktikal untuk menggunakan thenReturn() dalam aplikasi Spring Boot untuk menguji logik pengawal tanpa bergantung pada pelaksanaan perkhidmatan sebenar.

Atas ialah kandungan terperinci kaedah thenReturn() dalam contoh Mockito. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan