[英]How to use Mockito.verify with ignore one field?
I have a module:我有一个模块:
class User {
String id;
double text;
constructor (String id){
this.id = id;
this.text = Math.random();
}
}
And a method:还有一个方法:
class UserService{
void saveUser(String id){
User user = new User(id);
userRepository.save(user);
}
}
And for this code I want to make a Unit test:对于这段代码,我想做一个单元测试:
@Test
void saveUserTest(){
//Given
User userTest = new User("123");
//When
UserService.saveUser("123");
//Then
Mockito.verify(userRepository).save(userTest);
}
and here I got a difference because User text was randomly generated.在这里我有所不同,因为用户文本是随机生成的。
So, how can I ignore the field text?那么,我怎样才能忽略字段文本呢?
You can either ignore it using Mockito.any(User.class)
您可以使用
Mockito.any(User.class)
忽略它
Mockito.verify(userRepo).save(Mockito.any(User.class));
or make use of Argument Captor to capture what was passed in and further assert that value if you want.或使用 Argument Captor 来捕获传入的内容,并根据需要进一步断言该值。
Something like so:像这样:
@Captor
private ArgumentCaptor<User> userArgumentCaptor;
@Test
void saveUserTest(){
//Given
User userTest = new User("123");
//When
userService.saveUser("123");
//Then
Mockito.verify(userRepo).save(userArgumentCaptor.capture());
assert(userArgumentCaptor.getValue().getId()).equals("123");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.