有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在SpringBootJava中测试接受模型参数的函数

由于我不熟悉Spring Boot Java的测试,我需要测试一个函数,该函数将模型作为参数和区域设置,如下所示:

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

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

我不想对一个控制器进行测试,想象一下我们有一个名为User的模型和一个函数,它做了一些事情,但将模型作为参数和语言环境,以及其他类似字符串的东西

我的模型:

@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) 个答案

  1. # 1 楼答案

    直接对Spring控制器进行单元测试通常不是很有帮助,因为SpringMVC依赖于普通单元测试所没有的“魔力”

    相反,我建议使用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"));
    }