stub和mock

z4bn682m  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(260)

马丁·福勒说:
虚拟对象被传递,但从未实际使用过。通常它们只是用来填充参数列表。假对象实际上有工作的实现,但通常采取一些使它们不适合生产的快捷方式(内存中的数据库就是一个很好的例子)。
存根为测试过程中的呼叫提供了固定的答案,通常对测试程序之外的任何东西都没有响应。存根还可以记录有关呼叫的信息,例如电子邮件网关存根,它可以记住它“发送”的消息,或者只记录它“发送”的消息数。
mock就是我们在这里讨论的东西:用期望值预先编程的对象,这些期望值形成了它们期望接收的调用的规范。
在mockito有@mock和@spy。。
测试场景中

public class UserService() {

@Autowired
UserRepository userRepository;

  public String name(Long id) {
      return userRepository.findById(id).getName();
  }

}
@Autowired // or @InjectMocks ?
UserService userService;

@Mock
UserRepository userRepository;

@Test
void t1() {
  User user = new User("hello");
  given(userRepository.findById(1L)).thenReturn(user); // is it stub ? or mock?

  assertTaht(userService.name()).isEqualsTo("hello");
}

我是通过模拟测试还是通过存根测试?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题