{"id":98703,"date":"2025-02-23T07:59:31","date_gmt":"2025-02-23T04:29:31","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/any-method-in-mockito-spring-boot-example-12an\/"},"modified":"2025-02-23T07:59:31","modified_gmt":"2025-02-23T04:29:31","slug":"any-method-in-mockito-spring-boot-example-12an","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/any-method-in-mockito-spring-boot-example-12an\/","title":{"rendered":"\u0647\u0631 \u0631\u0648\u0634 () \u062f\u0631 \u0646\u0645\u0648\u0646\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 Mockito"},"content":{"rendered":"<div data-article-id=\"2293543\" id=\"article-body\">\n<p>\u0627\u0632 \u0631\u0648\u0634 () \u062f\u0631 Mockito \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u0645\u0634\u062e\u0635 \u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0645\u0639\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u0633\u062e\u0631\u0647 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f.<\/p>\n<p><strong>1\u20e3 \u0686\u0647 \u0645\u0648\u0642\u0639 \u0627\u0632 \u0647\u0631 () \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061f<\/strong><\/p>\n<p>\u0648\u0642\u062a\u06cc \u0628\u0647 \u0627\u0631\u0632\u0634 \u062f\u0642\u06cc\u0642 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0627\u0647\u0645\u06cc\u062a \u0646\u0645\u06cc \u062f\u0647\u06cc\u062f \u0648 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u062e\u0648\u0631\u062f \u0628\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u067e\u0648\u06cc\u0627 \u060c \u0645\u0627\u0646\u0646\u062f \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0648\u0644\u06cc\u062f \u0634\u062f\u0647 \u060c \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u06cc\u0627 \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<p><strong>2\u20e3 \u0645\u062b\u0627\u0644 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0631 ()<\/strong><\/p>\n<p>\u0633\u0646\u0627\u0631\u06cc\u0648:<\/p>\n<p>\u0645\u0627 \u06cc\u06a9 \u06a9\u0627\u0631\u0645\u0646\u062f \u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0645\u0646\u062f \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u06a9\u0627\u0631\u0645\u0646\u062f \u06a9\u0627\u0631 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u06cc\u06a9 \u0634\u06cc\u0621 \u062e\u0627\u0635 \u06a9\u0627\u0631\u0645\u0646\u062f \u060c \u0645\u0627 \u0627\u0632 \u0647\u0631 (\u06a9\u0627\u0631\u0645\u0646\u062f. \u06a9\u0644\u0627\u0633) \u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0631\u0648\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p><strong>\ud83d\udccc \u06a9\u0627\u0631\u0645\u0646\u062f. \u062c\u0648\u0627 (\u06a9\u0644\u0627\u0633 \u0645\u062f\u0644)<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>package com.example.demo.model;\n\npublic class Employee {\n    private String id;\n    private String name;\n\n    public Employee(String id, String name) {\n        this.id = id;\n        this.name = name;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    public String getName() {\n        return name;\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\ud83d\udccc askereerepository.java (\u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647)<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>package com.example.demo.repository;\n\nimport com.example.demo.model.Employee;\nimport org.springframework.stereotype.Repository;\n\n@Repository\npublic class EmployeeRepository {\n    public void save(Employee employee) {\n        System.out.println(\"Saving employee: \" + employee.getName());\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\ud83d\udccc costormervice.java (\u0645\u0646\u0637\u0642 \u062a\u062c\u0627\u0631\u062a)<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>package com.example.demo.service;\n\nimport com.example.demo.model.Employee;\nimport com.example.demo.repository.EmployeeRepository;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class EmployeeService {\n    private final EmployeeRepository employeeRepository;\n\n    public EmployeeService(EmployeeRepository employeeRepository) {\n        this.employeeRepository = employeeRepository;\n    }\n\n    public void addEmployee(Employee employee) {\n        employeeRepository.save(employee);\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>3\u20e3 \u0646\u0648\u0634\u062a\u0646 \u06cc\u06a9 \u0622\u0632\u0645\u0648\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0647\u0631 ()<\/strong><br \/><strong>\u2705 \u0633\u0646\u0627\u0631\u06cc\u0648:<\/strong><\/p>\n<p>\u0645\u0627 \u06a9\u0627\u0631\u0645\u0646\u062f\u0627\u0646 \u0631\u0627 \u0645\u0633\u062e\u0631\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0631\u0648\u0634 \u0630\u062e\u06cc\u0631\u0647 () \u0622\u0646 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0627\u062c\u0631\u0627 \u0646\u0634\u0648\u062f.<\/p>\n<p>\u0645\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 Save () \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c \u0627\u0645\u0627 \u0628\u062f\u0648\u0646 \u0628\u0631\u0631\u0633\u06cc \u0634\u06cc\u0621 \u062f\u0642\u06cc\u0642 \u06a9\u0627\u0631\u0645\u0646\u062f.<\/p>\n<p>\u0645\u0627 \u0628\u0631\u0627\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u0628\u0627 \u0647\u0631 \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631\u0645\u0646\u062f \u0627\u0632 \u0647\u0631 (\u06a9\u0627\u0631\u0645\u0646\u062f. \u06a9\u0644\u0627\u0633) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>package com.example.demo.service;\n\nimport com.example.demo.model.Employee;\nimport com.example.demo.repository.EmployeeRepository;\nimport org.junit.jupiter.api.Test;\nimport org.junit.jupiter.api.extension.ExtendWith;\nimport org.mockito.InjectMocks;\nimport org.mockito.Mock;\nimport org.mockito.Mockito;\nimport org.mockito.junit.jupiter.MockitoExtension;\n\nimport static org.mockito.Mockito.*;\n\n@ExtendWith(MockitoExtension.class)\nclass EmployeeServiceTest {\n\n    @Mock\n    private EmployeeRepository employeeRepository; \/\/ Mock repository\n\n    @InjectMocks\n    private EmployeeService employeeService; \/\/ Inject mocks into service\n\n    @Test\n    void testAddEmployee_UsingAnyMatcher() {\n        \/\/ Arrange\n        Employee employee = new Employee(\"1\", \"Mock Employee\");\n\n        \/\/ Stub the void method\n        doNothing().when(employeeRepository).save(any(Employee.class));\n\n        \/\/ Act\n        employeeService.addEmployee(employee);\n\n        \/\/ Assert: Verify the save() method was called, but ignore exact argument\n        verify(employeeRepository, times(1)).save(any(Employee.class));\n    }\n}\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u2705 \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/strong><\/p>\n<p>\u0627\u0632 \u0647\u0631 () \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u062f\u0642\u06cc\u0642 \u0645\u0647\u0645 \u0646\u0628\u0627\u0634\u062f.<br \/>\u0628\u0647 \u0645\u0633\u062e\u0631\u0647 \u06a9\u0631\u062f\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u0648\u06cc\u0627 \u06a9\u0647 \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\u0628\u0631\u0627\u06cc \u062a\u0623\u06cc\u06cc\u062f \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0631\u0648\u0634 \u0628\u0627 \u062a\u0623\u06cc\u06cc\u062f () \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0632 \u0631\u0648\u0634 () \u062f\u0631 Mockito \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0645\u0633\u0627\u0628\u0642\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u0645\u0634\u062e\u0635 \u0634\u0648\u062f \u06a9\u0647 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0645\u0639\u06cc\u0646 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0647 \u06cc\u06a9 \u0631\u0648\u0634 \u0645\u0633\u062e\u0631\u0647 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f. 1\u20e3 \u0686\u0647 \u0645\u0648\u0642\u0639 \u0627\u0632 \u0647\u0631 () \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061f \u0648\u0642\u062a\u06cc \u0628\u0647 \u0627\u0631\u0632\u0634 \u062f\u0642\u06cc\u0642 \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0627\u0647\u0645\u06cc\u062a \u0646\u0645\u06cc \u062f\u0647\u06cc\u062f \u0648 \u0641\u0642\u0637 \u0628\u0627\u06cc\u062f \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":98704,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-98703","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/98703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=98703"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/98703\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/98704"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=98703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=98703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=98703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}