Модульные тесты с использованием Mockito - PullRequest
0 голосов
/ 17 апреля 2020

Я новичок в модульных тестах и ​​хорошо, я изо всех сил пытаюсь понять, как это должно быть сделано. У меня есть несколько методов с @RequestParam, и я не уверен, как это издеваться. Было бы здорово, если бы у меня был пример, который я мог бы применить к другим методам.

Не могли бы вы помочь мне, написав метод испытаний для этого? Это было бы очень полезно.

    @PutMapping("/player/update-password")
    public ResponseEntity<?> updatePlayerPassword(@RequestParam("token") String token, @RequestParam("password") String newPassword) throws URISyntaxException {
        String message = bundle.getString("put_player");
        log.debug(message, token, newPassword);
        PlayerEntity player = playerService.updatePassword(token, newPassword);
        return new ResponseEntity<>(PlayerMapper.INSTANCE.mapPlayer(player), HttpStatus.ACCEPTED);
    }

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Надеюсь, вы используете 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());      
    }
}
0 голосов
/ 17 апреля 2020

Вы можете использовать аннотации @Mock и @InjectMocks. С его помощью вы можете вводить макеты в ваш контроллер.

@Mock
PlayerService playerServiceMock;

И использовать when().then() из Mockito внутри теста или метода с @Before аннотацией:

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

То же самое можно сделать для bundle.getString("put_player").

...