Тестирование функции, которая принимает параметр модели в весенней загрузке Java - PullRequest
0 голосов
/ 08 мая 2018

Поскольку я новичок в тестировании в Spring Boot Java, мне нужно протестировать функцию, которая принимает модель в качестве параметра и локали, как этот:

public void doSomething(User user, Locale locale, String any){

//instructions ---------
}

Я не хочу делать тест дляконтроллер просто представьте, что у нас есть модель с именем User и функция, которая что-то делает, но принимает модель в качестве параметра и локали и что-то еще, например String.

Моя модель:

@Entity
@Table(name = "user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique= true, nullable = false)
private Long id;


private String firstName;

private String lastName;

private String email;

@Column(length = 60)
private String password;


private boolean enabled;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", 
referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = 
"role_id", referencedColumnName = "id"))
private Collection<Role> roles;


private String secret;
//getters and setters

}

1 Ответ

0 голосов
/ 08 мая 2018

Юнит-тестирование Spring-контроллеров напрямую, как правило, не очень полезно, потому что Spring MVC полагается на «магию», которой нет в простом юнит-тесте.

Вместо этого я бы рекомендовал использовать Spring MVC Test Framework или MockMVC. Он позволяет вам запускать виртуальные запросы к вашему контроллеру, устанавливать заголовок и тело запроса и делать утверждения на основе отправленного обратно виртуального ответа. Эти тесты формально являются интеграционными тестами, но они обычно не требуют внешних зависимостей, и вы бы использовали Mockito или аналогичную среду для абстрагирования сервисных зависимостей. Вот пример теста (взят из ссылочного раздела Spring, указанного выше):

@Test
void getAccount() throws Exception {
    this.mockMvc.perform(get("/accounts/1")
            .accept(MediaType.parseMediaType("application/json;charset=UTF-8")))
        .andExpect(status().isOk())
        .andExpect(content().contentType("application/json"))
        .andExpect(jsonPath("$.name").value("Lee"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...