在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 楼答案
直接对Spring控制器进行单元测试通常不是很有帮助,因为SpringMVC依赖于普通单元测试所没有的“魔力”
相反,我建议使用Spring MVC Test Framework或MockMVC。它允许您对控制器发出虚拟请求,设置请求头和请求体,并根据返回的虚拟响应进行断言。这些测试是正式的集成测试,但它们通常不需要外部依赖项,您可以使用Mockito或类似的框架来抽象出服务依赖项。下面是一个示例测试(取自上面链接的Spring参考部分):