使用Mockito进行单元测试

时间:2020-04-17 08:47:19

标签: java unit-testing mockito

我是单元测试的新手,而且,我正努力了解应如何进行。 我有@RequestParam的一些方法,我不确定如何模拟此方法。 如果有一个示例可以应用到其他方法,那就太好了。

您能通过编写此方法的测试方法来帮助我吗?这将非常有用。

Response.SubStatusCode = 9876;
Response.StatusCode = 54321;

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用@Mock@InjectMocks批注。有了它,您就可以向控制器注入模拟了。

@Mock
PlayerService playerServiceMock;

然后在Mockito的when().then()内使用带有@Before批注的测试或方法:

when(playerServiceMock.updatePassword(anyString(), anyString())).thenReturn(playerEntity);

bundle.getString("put_player")也可以这样做。

答案 1 :(得分:0)

希望您正在使用Mockito。您可以尝试以下代码,需要添加所有导入

@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.MOCK)
public class YourClassNameTest {

    @Autowired
    MockMvc mockMvc;

    @InjectMocks
    YourClassName yourClassName;

    @Mock
    PlayerService playerService;

    @Before
    public void Setup() {
        mockMvc = MockMvcBuilders.standaloneSetup(yourClassName);
    }

    @Test
    public void updatePlayerPasswordTest() throws Exception {

        PlayerEntity player = new PlayerEntity();
        // set some date if you want

        Mockito.when(playerService.updatePassword(anyString(), anyString())).thenReturn(player);

                RequestBuilder requestBuilder = MockMvcRequestBuilders
                .get("/player/update-password?token=abc&password=test")
                .accept(MediaType.APPLICATION_JSON);
        mockMvc.perform(requestBuilder).andExpect(MockMvcResultMatchers.status().isCreated());      
    }
}