モック オブジェクトのメソッドを呼び出すと、実際のメソッドは実行されませんが、戻り値の型のデフォルト値 (object は null を返し、int は 0 を返します)。それ以外の場合は、 when (Method).thenReturn(value) を指定してメソッドの戻り値を指定します。同時に、モック オブジェクトを追跡し、verify メソッドを使用してそれが呼び出されたかどうかを確認できます。スパイ オブジェクトはデフォルトで実際のメソッドを実行し、戻り値は when.thenReturn を通じてオーバーライドできます。モックが一部のメソッドの実行を回避し、指定された値を直接返す限り、他のテストには便利であることがわかります。
必要な依存関係
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> <version>2.1.13.RELEASE</version> </dependency>
コード サンプル
@RunWith(MockitoJUnitRunner.class) @SpringBootTest() public class StudentServiceTest { @InjectMocks StudentService studentService = new StudentServiceImpl(); @Mock StudentDAO studentDAO; @Before public void before(){ Mockito.doReturn(new StudentDO("张三", 18)).when(studentDAO).read(Mockito.anyString()); } @Test public void testRead(){ StudentDO read = studentService.read(""); Assert.assertNotNull(read); } }
必要な依存関係
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.14.RELEASE</version> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.4.0</version> </dependency>
コード例
@RunWith(MockitoJUnitRunner.class) @SpringBootTest() public class StudentControllerTest { @Resource MockMvc mockMvc; @InjectMocks StudentController studentController; @Mock StudentService studentService; @Before public void before() { mockMvc = MockMvcBuilders.standaloneSetup(studentController).build(); Mockito.doReturn(new StudentDO("张三", 18)).when(studentService).read(Mockito.anyString()); } @Test public void testRead() throws Exception { MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/student/read/1"); mockMvc.perform(request) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$.name").value("张三")); } }
以上がJava単体テストにMockitoを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。