{"id":7065,"date":"2026-09-23T17:00:42","date_gmt":"2026-09-23T13:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7065"},"modified":"2026-09-23T17:00:42","modified_gmt":"2026-09-23T13:30:42","slug":"argument-matcher%d9%87%d8%a7%db%8c-mockito-any%d8%8c-eq-%d9%88-%d9%85%d9%88%d8%a7%d8%b1%d8%af-%d8%af%db%8c%da%af%d8%b1","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/argument-matcher%d9%87%d8%a7%db%8c-mockito-any%d8%8c-eq-%d9%88-%d9%85%d9%88%d8%a7%d8%b1%d8%af-%d8%af%db%8c%da%af%d8%b1\/","title":{"rendered":"Argument Matcher\u0647\u0627\u06cc Mockito: any()\u060c eq() \u0648 \u0645\u0648\u0627\u0631\u062f \u062f\u06cc\u06af\u0631"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Argument Matcher\u0647\u0627\u06cc Mockito \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0645\u062a\u062f \u0631\u0627 Stub \u0648 Verify \u06a9\u0646\u06cc\u062f\u2014\u0628\u062f\u0648\u0646 Hard-code \u06a9\u0631\u062f\u0646 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631\u0650 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0650 Mockito. \u0648\u0642\u062a\u06cc Matcher\u0647\u0627 \u0631\u0627 \u0628\u0627 when() \u0648 verify() \u062c\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u00ab\u0647\u0631 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc\u00bb \u06cc\u0627 \u00ab\u0627\u06cc\u0646 ID \u062f\u0642\u06cc\u0642\u00bb \u0631\u0627 \u0628\u06cc\u0627\u0646 \u06a9\u0646\u06cc\u062f\u061b \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u0633\u062a\u200c\u0647\u0627 \u062e\u0648\u0627\u0646\u0627 \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c Matcher\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc\u060c \u0642\u0627\u0639\u062f\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u06a9\u0647 \u0627\u0632 InvalidUseOfMatchersException \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c ArgumentCaptor \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627\u2014\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API\u0647\u0627\u06cc \u0641\u0639\u0644\u06cc Mockito 5.x \u0628\u0627 JUnit 5\u2014\u0645\u0631\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Argument Matcher\u0647\u0627\u06cc Mockito \u062f\u0631 <code>org.mockito.ArgumentMatchers<\/code> \u0632\u0646\u062f\u06af\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648 \u0641\u0642\u0637 \u062f\u0631\u0648\u0646 when()\u060c verify() \u0648 helper\u0647\u0627\u06cc Stubbing \u0645\u0631\u062a\u0628\u0637 \u0645\u0627\u0646\u0646\u062f doNothing().when() \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n\n\n\n<li>\u0627\u06af\u0631 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u06cc \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f\u060c \u0647\u0631 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u06cc \u062f\u0631 \u0622\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. Literal\u0647\u0627 \u0631\u0627 \u0628\u0627 eq() \u0628\u067e\u06cc\u0686\u06cc\u062f\u2014\u0628\u0647\u200c\u062c\u0627\u06cc \u067e\u0627\u0633 \u062f\u0627\u062f\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0645.<\/li>\n\n\n\n<li>Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 (anyString()\u060c anyInt()\u060c anyList()) \u0631\u0627 \u0628\u0647 any() \u062e\u0627\u0645 \u0628\u0631\u0627\u06cc Primitive\u0647\u0627 \u0648 Reference\u0647\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0647\u06cc\u062f \u062a\u0627 \u0627\u0632 \u063a\u0627\u0641\u0644\u06af\u06cc\u0631\u06cc\u200c\u0647\u0627\u06cc null\/Unboxing \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0627\u0632 ArgumentCaptor \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0628\u0639\u062f \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0628\u06cc\u0646\u06cc\u062f \u0686\u0647 \u0686\u06cc\u0632\u06cc \u067e\u0627\u0633 \u0634\u062f\u0647. \u0627\u0632 argThat() \u0628\u0627 ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0646\u0637\u0642 Matching \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f\u0650 Inline \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f.<\/li>\n\n\n\n<li>Matcher\u0647\u0627 \u0627\u0646\u062a\u0638\u0627\u0631\u0627\u062a \u0631\u0627 \u0631\u0648\u06cc Stack \u062f\u0627\u062e\u0644\u06cc \u062b\u0628\u062a \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0633\u0627\u062e\u062a\u06af\u06cc (Dummy) \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f\u061b \u067e\u0633 \u0647\u0631\u06af\u0632 \u0628\u06cc\u0631\u0648\u0646 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a Stubbing \u06cc\u0627 Verification \u0635\u062f\u0627\u200c\u0634\u0627\u0646 \u0646\u0632\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Java 11 \u06cc\u0627 \u062c\u062f\u06cc\u062f\u062a\u0631.<\/strong> \u0627\u06af\u0631 Runtime \u0645\u062d\u0644\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 \u062c\u0627\u0648\u0627 \u0628\u0627 Apt \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u067e\u0631\u0648\u0698\u0647 Maven \u06cc\u0627 Gradle \u0628\u0627 JUnit 5 \u0648 Mockito 5.x.<\/strong> \u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0632 Mockito 5.14.2 \u0648 JUnit Jupiter 5.10.2 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0622\u0634\u0646\u0627\u06cc\u06cc \u0628\u0627 Mock\u0647\u0627\u06cc \u067e\u0627\u06cc\u0647<\/strong> \u0627\u0632 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc Mock \u062f\u0631 Mockito\u00bb \u0648 Verification \u0627\u0632 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00abVerify \u062f\u0631 Mockito\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f.<\/li>\n\n\n\n<li><strong>\u067e\u0633\u200c\u0632\u0645\u06cc\u0646\u0647 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc:<\/strong> \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u00ab\u0622\u0645\u0648\u0632\u0634 JUnit 5\u00bb \u0648 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u062a\u0631 \u00ab\u0622\u0645\u0648\u0632\u0634 Mockito\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u062a\u0633\u062a Maven:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;dependency&gt;\n  &lt;groupId&gt;org.junit.jupiter&lt;\/groupId&gt;\n  &lt;artifactId&gt;junit-jupiter&lt;\/artifactId&gt;\n  &lt;version&gt;5.10.2&lt;\/version&gt;\n  &lt;scope&gt;test&lt;\/scope&gt;\n&lt;\/dependency&gt;\n&lt;dependency&gt;\n  &lt;groupId&gt;org.mockito&lt;\/groupId&gt;\n  &lt;artifactId&gt;mockito-junit-jupiter&lt;\/artifactId&gt;\n  &lt;version&gt;5.14.2&lt;\/version&gt;\n  &lt;scope&gt;test&lt;\/scope&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Import \u06a9\u0631\u062f\u0646 Matcher\u0647\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a Static \u062f\u0631 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u062a\u0633\u062a:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import static org.mockito.ArgumentMatchers.*;\nimport static org.mockito.Mockito.*;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Argument Matcher\u0647\u0627\u06cc Mockito \u0686\u06cc\u0633\u062a\u0646\u062f\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Argument Matcher\u0647\u0627\u06cc Mockito\u060c \u0645\u062a\u062f\u0647\u0627\u06cc Helper\u0627\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0634\u0631\u0627\u06cc\u0637 \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u062a\u062f \u062d\u06cc\u0646 Stubbing \u06cc\u0627 Verification \u062a\u0648\u0635\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc Matching \u0628\u0627 equals() \u0631\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0647\u0631 String\u060c \u0647\u0631 int \u0645\u062b\u0628\u062a \u06cc\u0627 \u0642\u0627\u0646\u0648\u0646 \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Argument Matcher\u0647\u0627 \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Mockito \u062c\u0627\u06cc \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mockito\u060c Matcher\u0647\u0627 \u0631\u0627 \u0631\u0648\u06cc Stack \u062f\u0627\u062e\u0644\u06cc\u200c\u0627\u06cc \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648\u0642\u062a\u06cc Stub \u06cc\u0627 Verification\u0627\u06cc \u0645\u06cc\u200c\u0633\u0627\u0632\u06cc\u062f. \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f anyInt() \u0645\u0642\u0627\u062f\u06cc\u0631 Dummy \u0627\u0645\u0646\u06cc \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u0646\u062f (\u0645\u062b\u0644\u0627\u064b 0 \u0628\u0631\u0627\u06cc anyInt()) \u062a\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062c\u0627\u0648\u0627 \u0639\u0628\u0627\u0631\u062a\u0650 \u062f\u0631\u0648\u0646 when(mock.get(anyInt())) \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u062f. Matching \u0648\u0627\u0642\u0639\u06cc \u0648\u0642\u062a\u06cc \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 Mockito Matcher\u0647\u0627\u06cc \u062b\u0628\u062a\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0648\u0627\u0642\u0639\u06cc \u0628\u0627\u0632\u067e\u062e\u0634 \u06a9\u0646\u062f. \u0645\u0631\u062c\u0639 \u0631\u0633\u0645\u06cc: Javadoc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 ArgumentMatchers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0632 Matcher \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 (\u06cc\u0627 eq()) \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062a\u0633\u062a \u0628\u0647 \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u062e\u0627\u0635 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc\u200c\u062f\u0647\u062f. \u0627\u0632 Matcher\u0647\u0627 \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u06cc\u200c\u0627\u0647\u0645\u06cc\u062a \u0627\u0633\u062a\u060c \u0628\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0645\u062a\u063a\u06cc\u0631 \u0627\u0633\u062a \u06cc\u0627 \u0627\u0632 \u0627\u0644\u06af\u0648\u06cc\u06cc \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0646\u0648\u0639\u060c \u0628\u0627\u0632\u0647\u060c \u0632\u06cc\u0631\u0631\u0634\u062a\u0647). \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06cc\u0634\u200c\u0627\u0632\u062d\u062f \u0627\u0632 any() \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627\u06af\u200c\u0647\u0627 \u0631\u0627 \u067e\u0646\u0647\u0627\u0646 \u06a9\u0646\u062f\u061b \u067e\u0633 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0648\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u0628\u0627\u0634\u06cc\u062f \u0648 \u0648\u0642\u062a\u06cc Matcher\u0647\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0631\u0627 \u06a9\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0633\u0631\u0627\u063a\u200c\u0634\u0627\u0646 \u0628\u0631\u0648\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u0644\u0627\u0633 \u0646\u0645\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Foo {\n    public boolean bool(String str, int i, Object obj) {\n        return false;\n    }\n\n    public int in(boolean b, java.util.List&lt;String&gt; strs) {\n        return 0;\n    }\n\n    public int bar(byte&#91;] bytes, String&#91;] s, int i) {\n        return 0;\n    }\n\n    public void log(String message) {\n        \/\/ no-op\n    }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0642\u0627\u0639\u062f\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc Argument Matcher<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mockito \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u06cc\u0627 \u0647\u0645\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627 \u062f\u0631 Stubbing \u06cc\u0627 Verification \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f\u060c \u06cc\u0627 \u0647\u06cc\u0686\u200c\u06a9\u062f\u0627\u0645. \u062a\u0631\u06a9\u06cc\u0628 Matcher \u0628\u0627 Literal \u062e\u0627\u0645\u060c InvalidUseOfMatchersException \u0631\u0627 Trigger \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0631\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Matcher\u0647\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u0631\u0627 \u062a\u0631\u06a9\u06cc\u0628 \u06a9\u0631\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Matcher\u0647\u0627 \u0648 Literal\u0647\u0627 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u06a9\u062f\u06cc \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0631\u0648\u0646 Mockito \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0627\u06cc \u0645\u062b\u0644 <code>when(mock.bool(anyString(), 1, any()))<\/code> \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a\u061b \u0686\u0648\u0646 1 \u0645\u0642\u062f\u0627\u0631 \u062e\u0627\u0645 \u0627\u0633\u062a \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0628\u0642\u06cc\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u0627\u062f\u0631\u0633\u062a:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bool(anyString(), 1, any(Object.class))).thenReturn(true); \/\/ \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062f\u0631\u0633\u062a:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bool(anyString(), eq(1), any(Object.class))).thenReturn(true);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u06cc\u0646 \u0642\u0627\u0639\u062f\u0647 \u0631\u0648\u06cc verify() \u0647\u0645 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>verify(mockFoo).bool(eq(\"hello\"), anyInt(), any(Object.class));<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u062d\u0648\u0647 \u0631\u0641\u0639 InvalidUseOfMatchersException<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0647\u0631 Literal \u0631\u0627 \u0628\u0627 eq() \u0628\u067e\u06cc\u0686\u06cc\u062f: <code>eq(1)<\/code> \u06cc\u0627 <code>eq(\"hello\")<\/code>.<\/li>\n\n\n\n<li>\u06cc\u0627 \u0647\u0645\u0647 Matcher\u0647\u0627 \u0631\u0627 \u062d\u0630\u0641 \u0648 \u0641\u0642\u0637 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0634\u062e\u0635 \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f.<\/li>\n\n\n\n<li>\u0647\u0631\u06af\u0632 \u0646\u062a\u0627\u06cc\u062c Matcher \u0631\u0627 \u062f\u0631 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0648 \u0628\u06cc\u0646 Stubbing\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0646\u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Argument Matcher\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 Mockito<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u062f\u0648\u0644 \u0632\u06cc\u0631 Matcher\u0647\u0627\u06cc \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f \u062f\u0631 Mockito 5.x \u0631\u0627 \u062e\u0644\u0627\u0635\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc Reference\u0647\u0627\u06cc null\u060c Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u0645\u0627\u0646\u0646\u062f anyString() \u0628\u0627 null \u062a\u0637\u0628\u06cc\u0642 \u0646\u0645\u06cc\u200c\u06cc\u0627\u0628\u0646\u062f\u061b \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 isNull() \u06cc\u0627 isNotNull() \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Matcher<\/th><th>\u0627\u0646\u0648\u0627\u0639 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647\u200c\u0634\u062f\u0647<\/th><th>\u0631\u0641\u062a\u0627\u0631 null<\/th><th>\u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644<\/th><\/tr><\/thead><tbody><tr><td>any()<\/td><td>\u0647\u0631 Reference\u060c Varargs<\/td><td>null \u0631\u0627 \u0645\u062c\u0627\u0632 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f<\/td><td>Matching loosen Reference<\/td><\/tr><tr><td>any(Class)<\/td><td>\u0646\u0648\u0639 T<\/td><td>null \u0631\u0627 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>Matching \u0622\u0628\u062c\u06a9\u062a\u0650 Type-Safe<\/td><\/tr><tr><td>eq(value)<\/td><td>\u0647\u0645\u0627\u0646 \u0646\u0648\u0639\u0650 value<\/td><td>\u0627\u0632 equals() \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>\u0645\u0642\u062f\u0627\u0631 \u062f\u0642\u06cc\u0642 \u062f\u0631\u0648\u0646 \u0632\u0646\u062c\u06cc\u0631\u0647\u200c\u0647\u0627\u06cc Matcher<\/td><\/tr><tr><td>anyString()<\/td><td>String<\/td><td>null \u0631\u0627 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>\u0647\u0631 \u0631\u0634\u062a\u0647 \u063a\u06cc\u0631-null<\/td><\/tr><tr><td>anyInt()<\/td><td>int \u06cc\u0627 Integer<\/td><td>Wrapper\u0650 null \u0631\u0627 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>int Primitive \u06cc\u0627 Boxed<\/td><\/tr><tr><td>anyList()<\/td><td>List<\/td><td>null \u0631\u0627 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>\u0647\u0631 List \u063a\u06cc\u0631-null<\/td><\/tr><tr><td>isNull() \/ isNotNull()<\/td><td>\u0627\u0646\u0648\u0627\u0639 Reference<\/td><td>\u0686\u06a9\u200c\u0647\u0627\u06cc null \u0635\u0631\u06cc\u062d<\/td><td>\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc Nullable<\/td><\/tr><tr><td>contains()\u060c startsWith()\u060c endsWith()<\/td><td>String<\/td><td>null \u0631\u0627 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f<\/td><td>Matching \u062c\u0632\u0626\u06cc \u0631\u0634\u062a\u0647<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 any() \u0648 any(Class) \u0628\u0631\u0627\u06cc Matching \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">any() \u0628\u0627 \u0647\u0631 Reference\u0627\u06cc\u2014including null\u2014\u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f (\u0648 Varargs \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f). any(Foo.class) \u0628\u0631\u0631\u0633\u06cc \u0646\u0648\u0639\u06cc \u0627\u0646\u062c\u0627\u0645 \u0648 null \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u0634\u0641\u0627\u0641\u06cc\u062a \u0645\u0647\u0645 \u0627\u0633\u062a any(Class) \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Foo mockFoo = mock(Foo.class);\nwhen(mockFoo.bool(anyString(), anyInt(), any(Object.class))).thenReturn(true);\n\nassertTrue(mockFoo.bool(\"A\", 1, \"A\"));\nassertTrue(mockFoo.bool(\"B\", 10, new Object()));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0622\u0631\u0627\u06cc\u0647\u200c\u0647\u0627\u060c \u06a9\u0644\u0627\u0633\u0650 \u0622\u0631\u0627\u06cc\u0647 \u0631\u0627 \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bar(any(byte&#91;].class), any(String&#91;].class), anyInt())).thenReturn(1);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 eq() \u0628\u0631\u0627\u06cc \u062a\u0637\u0628\u06cc\u0642 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u062f\u0631\u0648\u0646 \u0632\u0646\u062c\u06cc\u0631\u0647\u200c\u0647\u0627\u06cc Matcher<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0635 \u0631\u0627 \u0628\u0627 eq() \u0628\u067e\u06cc\u0686\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bool(eq(\"false\"), anyInt(), any(Object.class))).thenReturn(false);\nassertFalse(mockFoo.bool(\"false\", 10, new Object()));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 Matcher\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f Literal\u0647\u0627 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f: <code>when(mockFoo.bool(\"false\", 10, obj))<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 anyString()\u060c anyInt()\u060c anyList() \u0648 \u0633\u0627\u06cc\u0631 Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0647\u0628\u0648\u062f \u0648 \u0627\u0632 \u062f\u0627\u0645\u200c\u0647\u0627\u06cc Autoboxing \u0631\u0648\u06cc Primitive\u0647\u0627 \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.in(anyBoolean(), anyList())).thenReturn(10);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Collection\u0647\u0627 \u0648 Map\u0647\u0627 \u0647\u0645 anySet()\u060c anyMap() \u0648 anyCollection() \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 isNull() \u0648 isNotNull()<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bool(isNull(), anyInt(), isNotNull())).thenReturn(true);\nassertTrue(mockFoo.bool(null, 1, \"payload\"));<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 contains()\u060c startsWith() \u0648 endsWith() \u0628\u0631\u0627\u06cc Matching \u0631\u0634\u062a\u0647<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>when(mockFoo.bool(startsWith(\"ERR\"), anyInt(), any())).thenReturn(false);\nmockFoo.bool(\"ERR-404\", 0, null);\nverify(mockFoo).bool(contains(\"ERR\"), anyInt(), any());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Argument Matcher\u0647\u0627 \u0628\u0627 when() \u0628\u0631\u0627\u06cc Stubbing<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Stubbing \u0628\u0627 any() \u0648 eq() \u0628\u0627 \u0647\u0645<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>Foo mockFoo = mock(Foo.class);\nwhen(mockFoo.bool(anyString(), anyInt(), any(Object.class))).thenReturn(true);\nwhen(mockFoo.bool(eq(\"false\"), anyInt(), any(Object.class))).thenReturn(false);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Stubbing \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0639\u0644\u0627\u0646 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0627\u06af\u0631 \u0627\u0644\u06af\u0648\u0647\u0627 \u0647\u0645\u200c\u067e\u0648\u0634\u0627\u0646\u06cc \u062f\u0627\u0631\u0646\u062f\u060c \u062e\u0627\u0635\u200c\u062a\u0631\u06cc\u0646 Stub \u0628\u0627\u06cc\u062f \u0622\u062e\u0631 \u0638\u0627\u0647\u0631 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stubbing \u0645\u062a\u062f\u0647\u0627\u06cc \u0686\u0646\u062f\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc (\u0645\u062a\u062f\u0647\u0627\u06cc void)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc void\u060c \u0627\u0632 doNothing() \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 Matcher\u0647\u0627 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0634\u06a9\u0644 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>doNothing().when(mockFoo).log(anyString());\nmockFoo.log(\"ready\");<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Argument Matcher\u0647\u0627 \u0628\u0627 verify() \u0628\u0631\u0627\u06cc Verification \u0631\u0641\u062a\u0627\u0631<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Argument Matcher\u0647\u0627 \u0641\u0642\u0637 \u0628\u0627 verify() (\u0648 API\u0647\u0627\u06cc Stubbing) \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u2014\u0646\u0647 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0686\u06a9\u200c\u0647\u0627\u06cc \u0628\u0648\u0644\u06cc \u0639\u0645\u0648\u0645\u06cc.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Verify \u06a9\u0631\u062f\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u062a\u062f\u06cc \u0628\u0627 \u0627\u0646\u0648\u0627\u0639 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062e\u0627\u0635 (\u0627\u0646\u0648\u0627\u0639 \u067e\u0627\u0631\u0627\u0645\u062a\u0631)<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>verify(mockFoo, atLeastOnce()).bool(anyString(), anyInt(), any(Object.class));\nverify(mockFoo).bool(eq(\"false\"), anyInt(), any(Object.class));<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0631\u06a9\u06cc\u0628 verify() \u0628\u0627 times()\u060c never() \u0648 atLeast()<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>verify(mockFoo, times(1)).log(anyString());\nverify(mockFoo, never()).bool(eq(\"skip\"), anyInt(), any());\nverify(mockFoo, atLeast(0)).in(anyBoolean(), anyList());<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Assert \u06a9\u0631\u062f\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u060c \u0627\u0632 InOrder \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>InOrder inOrder = inOrder(mockFoo);\ninOrder.verify(mockFoo).log(anyString());\ninOrder.verify(mockFoo).bool(anyString(), anyInt(), any());<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u062b\u0628\u062a \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627 \u0628\u0627 ArgumentCaptor<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">ArgumentCaptor \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627\u06cc \u067e\u0627\u0633\u200c\u0634\u062f\u0647 \u0628\u0647 Mock \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u0639\u062f \u0627\u0632 \u0648\u0627\u0642\u0639 \u0634\u062f\u0646 \u0631\u0648\u06cc \u0622\u0646\u200c\u0647\u0627 Assert \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0645\u06a9\u0645\u0644 Matcher\u0647\u0627\u0633\u062a: Matcher\u0647\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646 \u067e\u0630\u06cc\u0631\u0634 \u0631\u0627 \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b Captor\u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u0628\u0627\u0632\u0631\u0633\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0632 ArgumentCaptor \u0628\u0647\u200c\u062c\u0627\u06cc Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Captor \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0647 \u0686\u0646\u062f Assertion \u0631\u0648\u06cc \u0647\u0645\u0627\u0646 \u0622\u0628\u062c\u06a9\u062a \u0628\u0639\u062f \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f (\u0641\u06cc\u0644\u062f\u0647\u0627\u060c \u062d\u062c\u0645\u060c \u0645\u0642\u0627\u062f\u06cc\u0631 \u0645\u0634\u062a\u0642\u200c\u0634\u062f\u0647). \u0627\u0632 Matcher\u0647\u0627 \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 Predicate\u0627\u06cc \u062d\u06cc\u0646 Stubbing \u06cc\u0627 Verification \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ArgumentCaptor&lt;String&gt; messageCaptor = ArgumentCaptor.forClass(String.class);\nmockFoo.log(\"shipped\");\nverify(mockFoo).log(messageCaptor.capture());\nassertEquals(\"shipped\", messageCaptor.getValue());<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">ArgumentCaptor \u0628\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0645\u0646\u0641\u0631\u062f \u0648 \u0645\u062a\u0639\u062f\u062f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mockFoo.log(\"first\");\nmockFoo.log(\"second\");\nArgumentCaptor&lt;String&gt; captor = ArgumentCaptor.forClass(String.class);\nverify(mockFoo, times(2)).log(captor.capture());\nassertEquals(List.of(\"first\", \"second\"), captor.getAllValues());<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">ArgumentCaptor \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0631\u0648\u06cc\u06a9\u0631\u062f<\/th><th>\u0645\u0646\u0627\u0633\u0628 \u0628\u0631\u0627\u06cc<\/th><th>\u0628\u062f\u0647\u200c\u0628\u0633\u062a\u0627\u0646<\/th><\/tr><\/thead><tbody><tr><td>ArgumentCaptor<\/td><td>\u0628\u0627\u0632\u0631\u0633\u06cc Instance\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0628\u0639\u062f \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc<\/td><td>\u0642\u062f\u0645 verify \u0627\u0636\u0627\u0641\u06cc\u060c \u0628\u0631\u0627\u06cc Stubbing \u0645\u0642\u0627\u062f\u06cc\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0646\u06cc\u0633\u062a<\/td><\/tr><tr><td>argThat(ArgumentMatcher)<\/td><td>\u0642\u0648\u0627\u0646\u06cc\u0646 Inline \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062d\u06cc\u0646 Stub\/Verify<\/td><td>\u062f\u06cc\u062f \u06a9\u0645\u062a\u0631 \u0628\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0648\u0627\u0642\u0639\u06cc \u0645\u06af\u0631 Verification \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u062f<\/td><\/tr><tr><td>eq() \/ any*() \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647<\/td><td>\u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647 \u0648 \u0633\u0631\u06cc\u0639<\/td><td>\u0628\u06cc\u0627\u0646 \u06a9\u0645\u062a\u0631 \u0628\u0631\u0627\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u0648\u0634\u062a\u0646 ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 <code>org.mockito.ArgumentMatcher&lt;T&gt;<\/code> \u0631\u0627 \u0648\u0642\u062a\u06cc \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 Matcher\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u06a9\u0627\u0641\u06cc \u0646\u0628\u0627\u0634\u0646\u062f. \u0645\u0646\u0637\u0642 \u0631\u0627 \u0628\u0627 argThat() \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 ArgumentMatcher<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import org.mockito.ArgumentMatcher;\n\npublic class PremiumOrderMatcher implements ArgumentMatcher&lt;Order&gt; {\n    @Override\n    public boolean matches(Order order) {\n        return order != null &amp;&amp; order.getTotalCents() &gt;= 10_000;\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 Matcher \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0627 \u0622\u0628\u062c\u06a9\u062a \u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Order {\n    private final int totalCents;\n    public Order(int totalCents) { this.totalCents = totalCents; }\n    public int getTotalCents() { return totalCents; }\n}\n\npublic class OrderService {\n    public boolean isPremium(Order order) {\n        return order != null &amp;&amp; order.getTotalCents() &gt;= 10_000;\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062b\u0628\u062a \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Matcher \u0633\u0641\u0627\u0631\u0634\u06cc \u062f\u0631 \u062a\u0633\u062a\u200c\u0647\u0627<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>OrderService service = mock(OrderService.class);\nwhen(service.isPremium(argThat(new PremiumOrderMatcher()))).thenReturn(true);\nassertTrue(service.isPremium(new Order(15_000)));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0641\u0631\u0645 Lambda (Java 8+):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>when(service.isPremium(argThat(o -&gt; o.getTotalCents() &gt; 5_000))).thenReturn(true);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0646\u06a9\u0627\u062a \u0637\u0631\u0627\u062d\u06cc \u0627\u0632 \u062a\u06cc\u0645 Mockito\u060c Javadoc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 ArgumentMatcher \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">AdditionalMatchers \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Mockito<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>org.mockito.AdditionalMatchers<\/code> \u0645\u0642\u0627\u06cc\u0633\u0647\u200c\u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u0648 Helper\u0647\u0627\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc \u0622\u0631\u0627\u06cc\u0647 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import static org.mockito.AdditionalMatchers.*;\n\nwhen(mockFoo.bar(any(byte&#91;].class), aryEq(new String&#91;] { \"A\", \"B\" }), gt(10))).thenReturn(11);\n\nassertEquals(11, mockFoo.bar(\"abc\".getBytes(), new String&#91;] { \"A\", \"B\" }, 20));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0627\u06cc\u0631 Helper\u0647\u0627 \u0634\u0627\u0645\u0644 lt()\u060c or()\u060c and() \u0648 not() \u0628\u0631\u0627\u06cc \u0634\u0631\u0627\u06cc\u0637 \u062a\u0631\u06a9\u06cc\u0628\u06cc\u200c\u0627\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0631\u0627\u06cc\u062c \u0648 \u0646\u062d\u0648\u0647 \u0627\u062c\u062a\u0646\u0627\u0628 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0631\u06a9\u06cc\u0628 Matcher\u0647\u0627 \u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062e\u0627\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062e\u0648\u0627\u0647\u0631\u06cc \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0647\u0645\u06cc\u0634\u0647 Literal\u0647\u0627 \u0631\u0627 \u0628\u0627 eq() \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Argument Matcher\u0647\u0627 \u0628\u06cc\u0631\u0648\u0646 \u0627\u0632 when() \u06cc\u0627 verify()<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>String value = anyString(); \/\/ \u0646\u0627\u062f\u0631\u0633\u062a: matcher \u0628\u06cc\u0631\u0648\u0646 \u0627\u0632 stub\/verify \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f\u0647<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Matcher\u0647\u0627 \u0628\u0627\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631\u0648\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u062a\u062f\u0650 Mock-\u0634\u062f\u0647\u200c\u0627\u06cc \u06a9\u0647 \u0628\u0647 when() \u06cc\u0627 verify() \u067e\u0627\u0633 \u0645\u06cc\u200c\u0634\u0648\u062f \u0638\u0627\u0647\u0631 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06cc\u0634\u200c\u0627\u0632\u062d\u062f \u0627\u0632 any() \u0648 \u067e\u0646\u0647\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0627\u06af\u200c\u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062d\u06cc\u0627\u062a\u06cc-\u0628\u0631\u0627\u06cc-\u06a9\u0633\u0628\u200c\u0648\u06a9\u0627\u0631 (ID\u0647\u0627\u060c Currency\u0647\u0627) \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0647\u06cc\u062f. \u0627\u0632 Matcher\u0647\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641 \u0646\u0648\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u2014\u0646\u0647 \u0628\u0631\u0627\u06cc \u0631\u062f \u06a9\u0631\u062f\u0646 Assertion\u0647\u0627\u06cc \u0645\u0647\u0645.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Argument Matcher\u0647\u0627\u06cc Mockito \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 Matcher\u0647\u0627\u06cc Hamcrest<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mockito \u0627\u0632 Hamcrest \u062f\u0631 \u0646\u0633\u062e\u0647 2.1 \u062c\u062f\u0627 \u0634\u062f. \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Hamcrest\u060c artifact \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 mockito-hamcrest \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0648 \u0628\u0647\u200c\u062c\u0627\u06cc API\u0647\u0627\u06cc \u0645\u0646\u0633\u0648\u062e\u0650 org.mockito.Matchers \u0627\u0632 MockitoHamcrest.argThat(org.hamcrest.Matcher) \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u060c \u062f\u0627\u062e\u0644\u06cc\u200c\u0647\u0627\u06cc Mockito \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 argThat(ArgumentMatcher) \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f \u0648 \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0627\u0636\u0627\u0641\u06cc \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0627\u0628\u0632\u0627\u0631<\/th><th>\u0646\u0642\u0637\u0647 \u0648\u0631\u0648\u062f<\/th><th>\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645<\/th><\/tr><\/thead><tbody><tr><td>ArgumentMatchers \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Mockito<\/td><td>any()\u060c eq()\u060c contains()<\/td><td>\u0627\u0646\u062a\u062e\u0627\u0628 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0628\u0631\u0627\u06cc \u062a\u0633\u062a\u200c\u0647\u0627\u06cc Mockito<\/td><\/tr><tr><td>ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc + argThat()<\/td><td>argThat(predicate)<\/td><td>\u0642\u0648\u0627\u0646\u06cc\u0646 \u062e\u0627\u0635-\u062f\u0627\u0645\u0646\u0647\u200c\u0627\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0628\u06cc\u0646 \u062a\u0633\u062a\u200c\u0647\u0627<\/td><\/tr><tr><td>Hamcrest \u0627\u0632 \u0637\u0631\u06cc\u0642 MockitoHamcrest<\/td><td>MockitoHamcrest.argThat(hasItem(&#8230;))<\/td><td>Assertion\u0647\u0627\u06cc Hamcrest \u0645\u0648\u062c\u0648\u062f\u06cc \u06a9\u0647 \u0627\u0632 \u0642\u0628\u0644 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u06cc\u062f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0646\u062a\u062e\u0627\u0628 \u0627\u0628\u0632\u0627\u0631 \u062f\u0631\u0633\u062a \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0646\u06cc\u0627\u0632<\/th><th>\u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/th><\/tr><\/thead><tbody><tr><td>\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0645\u0642\u062f\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/td><td>anyString()\u060c anyInt()\u060c any(MyDto.class)<\/td><\/tr><tr><td>\u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u062f\u0642\u06cc\u0642 \u0628\u06cc\u0646 Matcher\u0647\u0627<\/td><td>eq(&#8220;literal&#8221;)<\/td><\/tr><tr><td>\u0628\u0627\u0632\u0631\u0633\u06cc\u0650 \u0622\u0646\u0686\u0647 \u067e\u0627\u0633 \u0634\u062f\u0647<\/td><td>ArgumentCaptor<\/td><\/tr><tr><td>\u0642\u0627\u0646\u0648\u0646 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/td><td>ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 argThat()<\/td><\/tr><tr><td>Stub \u0645\u062a\u062f void<\/td><td>doNothing().when(mock).method(any())<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f1. Argument Matcher\u0647\u0627 \u062f\u0631 Mockito \u0686\u06cc\u0633\u062a\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Argument Matcher\u0647\u0627 \u0645\u062a\u062f\u0647\u0627\u06cc Static\u0627\u06cc \u0645\u0627\u0646\u0646\u062f anyString()\u060c eq() \u0648 argThat() \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 Mockito \u0645\u06cc\u200c\u06af\u0648\u06cc\u0646\u062f \u062d\u06cc\u0646 Stubbing \u06cc\u0627 Verification \u0686\u06af\u0648\u0646\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u062f. \u0622\u0646\u200c\u0647\u0627 Matching \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u0648\u0642\u062a\u06cc \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u0642\u06cc\u0642 \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u06cc\u0627 \u0628\u06cc\u200c\u0627\u0647\u0645\u06cc\u062a\u200c\u0627\u0646\u062f \u0645\u0645\u06a9\u0646 \u0645\u06cc\u200c\u0633\u0627\u0632\u0646\u062f. \u0627\u06af\u0631 \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u062f\u0631 \u0622\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f2. \u062a\u0641\u0627\u0648\u062a eq() \u0648 any() \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">eq(value) \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u06cc \u0631\u0627 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u06a9\u0647 \u0637\u0628\u0642 equals() (\u06cc\u0627 == \u0628\u0631\u0627\u06cc Primitive\u0647\u0627) \u0628\u0627 value \u0628\u0631\u0627\u0628\u0631 \u0628\u0627\u0634\u062f. any() \u0648 variant\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u200c\u0627\u0634 \u0645\u0627\u0646\u0646\u062f anyString() \u0637\u06cc\u0641 \u06af\u0633\u062a\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0648\u0631\u0648\u062f\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u0646\u062f \u06a9\u0647 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0646\u0648\u0639 \u06cc\u0627 \u0632\u06cc\u0631\u0631\u0634\u062a\u0647 \u0631\u0627 \u0627\u0631\u0636\u0627 \u06a9\u0646\u0646\u062f. \u0627\u0632 eq() \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u0648\u0631\u0648\u062f\u06cc \u062e\u0627\u0635 \u0628\u0627\u06cc\u062f \u0645\u0637\u0627\u0628\u0642\u062a \u06cc\u0627\u0628\u062f\u061b \u0627\u0632 any*() \u0648\u0642\u062a\u06cc \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u062f\u0642\u06cc\u0642 \u0645\u0647\u0645 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f3. \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Matcher\u0647\u0627\u060c \u0622\u06cc\u0627 \u0647\u0645\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u200c\u0647\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. Mockito \u0633\u0627\u0632\u06af\u0627\u0631\u06cc Matcher \u0631\u0627 \u0631\u0648\u06cc \u0647\u0631 Stubbing \u06cc\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc verify() \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0631\u06a9\u06cc\u0628 anyString() \u0628\u0627 Literal \u062e\u0627\u0645 \u0628\u0627\u0639\u062b InvalidUseOfMatchersException \u0645\u06cc\u200c\u0634\u0648\u062f. Literal\u0647\u0627 \u0631\u0627 \u0628\u0627 eq() \u0628\u067e\u06cc\u0686\u06cc\u062f \u06cc\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u060c Matcher\u0647\u0627 \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f4. \u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0628\u0627\u06cc\u062f \u0627\u0632 eq() \u062f\u0631 Mockito \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 eq() \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u062d\u062f\u0627\u0642\u0644 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u06cc\u06af\u0631 \u062f\u0631 \u0647\u0645\u0627\u0646 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0627\u0632 \u0642\u0628\u0644 \u0627\u0632 Matcher \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0628\u0647 \u0645\u0642\u062f\u0627\u0631 \u062f\u0642\u06cc\u0642\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f. \u0648\u0642\u062a\u06cc \u0647\u0631 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 Literal \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a \u0648 Matcher\u0627\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f eq() \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06f5. any() \u062f\u0631 Mockito \u0686\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">any() \u0628\u0627 \u0647\u0631 Reference \u0622\u0628\u062c\u06a9\u062a\u06cc (\u0634\u0627\u0645\u0644 null) \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc Reference \u0645\u0637\u0627\u0628\u0642\u062a \u0645\u06cc\u200c\u06cc\u0627\u0628\u062f. \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u200c\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u0645\u0627\u0646\u0646\u062f anyInt() \u06cc\u0627 any(Order.class) \u062a\u0637\u0628\u06cc\u0642\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 Primitive\u0647\u0627 \u06cc\u0627 Instance\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0648\u2014\u0627\u0632 Mockito 2.1.0\u2014null \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u0645\u0633\u062a\u062b\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0628\u0631\u0627\u06cc \u0634\u0641\u0627\u0641\u06cc\u062a \u0648 \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0627\u0645\u0646\u200c\u062a\u0631\u060c Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u062f\u0647\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Argument Matcher\u0647\u0627\u06cc Mockito \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u062a\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0627\u062d\u062f \u0645\u062a\u0645\u0631\u06a9\u0632\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\u2014\u0628\u0627 Stub \u0648 Verify \u06a9\u0631\u062f\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 \u0628\u0627 any()\u060c eq()\u060c Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u060c ArgumentCaptor \u0648 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc ArgumentMatcher \u0633\u0641\u0627\u0631\u0634\u06cc. \u0642\u0627\u0639\u062f\u0647 \u0647\u0645\u0647-\u06cc\u0627-\u0647\u06cc\u0686\u0650 Matcher \u0631\u0627 \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u061b \u0628\u0631\u0627\u06cc Primitive\u0647\u0627 \u0648 Collection\u0647\u0627 Matcher\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u0631\u0627 \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u062f\u061b \u0648 \u0648\u0642\u062a\u06cc \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0648\u0636\u0639\u06cc\u062a \u0648\u0627\u0642\u0639\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0631\u0627 \u0628\u0639\u062f \u0627\u0632 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0628\u0627\u0632\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0633\u0631\u0627\u063a Captor\u0647\u0627 \u0628\u0631\u0648\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Argument Matcher\u0647\u0627\u06cc Mockito \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0645\u062a\u062f \u0631\u0627 Stub \u0648 Verify \u06a9\u0646\u06cc\u062f\u2014\u0628\u062f\u0648\u0646 Hard-code \u06a9\u0631\u062f\u0646 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631\u0650 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0650 Mockito. \u0648\u0642\u062a\u06cc Matcher\u0647\u0627 \u0631\u0627 \u0628\u0627 when() \u0648 verify() \u062c\u0641\u062a \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0642\u0648\u0627\u0646\u06cc\u0646\u06cc \u0645\u0627\u0646\u0646\u062f \u00ab\u0647\u0631 \u0631\u0634\u062a\u0647\u200c\u0627\u06cc\u00bb \u06cc\u0627 \u00ab\u0627\u06cc\u0646 ID \u062f\u0642\u06cc\u0642\u00bb \u0631\u0627 \u0628\u06cc\u0627\u0646 \u06a9\u0646\u06cc\u062f\u061b \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u0633\u062a\u200c\u0647\u0627 \u062e\u0648\u0627\u0646\u0627 \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627\u060c Matcher\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc\u060c \u0642\u0627\u0639\u062f\u0647 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u06a9\u0647 \u0627\u0632 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190],"tags":[],"class_list":["post-7065","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7065","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7065"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7065\/revisions"}],"predecessor-version":[{"id":7067,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7065\/revisions\/7067"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7066"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7065"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7065"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7065"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}