我们什么时候需要使用Mockito的验证方法



我是Mockito的新手,正在努力了解验证方法的作用。它似乎是用来确保所选方法被调用一次。我有下面的代码,通过查看代码,我可以发现我调用了addBook方法两次,那么我为什么要使用verify呢?我的意思是,在任何情况下,都很容易确保一个方法被调用oncem,那么我们为什么要使用verify方法呢?

String isbn = mockedBookDAL.addBook(book1);
        assertNotNull(isbn);
        isbn = mockedBookDAL.addBook(book1);
        assertNotNull(isbn);
        verify(mockedBookDAL).addBook(book1);
        assertEquals(book1.getIsbn(), isbn);

想象一个管理帐户的类:

public class Account {
  private Logger logger;
  public Account(Logger logger) {
    this.logger = logger;
  }
  ...
  public void withdraw(int amount) {
    ...
    logger.logWithdrawal(amount);
    ...
  }
}

因此,为了测试提款是否确实被记录下来,您模拟记录器并验证交互:

public class AccountTest {
  @Test
  public void withdrawalShouldBeLogged() {
    Logger logger = mock(Logger.class);
    Account cut = new Account(logger);
    int amount = 10;
    cut.withdraw(amount);
    verify(logger).logWithdrawal(amount);
  }
}

这种形式的断言也被称为间谍。

另一个注意事项是:每个测试方法通常应该只断言一件事。验证间谍交互就是断言,所以通常不应该在同一方法中使用验证和断言。

相关内容

  • 没有找到相关文章

最新更新