繁体   English   中英

如何使用 Mockito.verify 忽略一个字段?

[英]How to use Mockito.verify with ignore one field?

我有一个模块:

class User {
   String id;
   double text;

   constructor (String id){
       this.id = id;
       this.text = Math.random();
   }
}

还有一个方法:

class UserService{
    void saveUser(String id){
        User user = new User(id);
        userRepository.save(user);
    }
}

对于这段代码,我想做一个单元测试:

@Test
void saveUserTest(){
    //Given
    User userTest = new User("123");

    //When
    UserService.saveUser("123");

    //Then
    Mockito.verify(userRepository).save(userTest);
}

在这里我有所不同,因为用户文本是随机生成的。

那么,我怎样才能忽略字段文本呢?

您可以使用Mockito.any(User.class)忽略它

Mockito.verify(userRepo).save(Mockito.any(User.class));

或使用 Argument Captor 来捕获传入的内容,并根据需要进一步断言该值。

像这样:

  @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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM