首页 > 解决方案 > 使用 Junit 5 在 Java 中进行模拟

问题描述

目前正在开展一个学校项目,我们将在其中使用 TDD 和模拟。我是嘲笑的新手,我在如何正确嘲笑方面遇到了一些困难。

我有一个 Bank 类和一个 Account 类,其中银行表示为填充有 Account 对象的哈希映射。Bank 类还有一个 createAccount() 方法,在该方法中创建了一个新的 Account 对象,并使用唯一的帐号(键)将其放入映射中,并返回所创建对象的帐号。

如果我得到一个重复的键,我想测试这个方法的行为,我很确定我需要模拟。但是我不知道应该如何实施这个测试。第一个测试工作正常

@ExtendWith(MockitoExtension.class)
public class BankTest {
    private Bank bank;

    private TransferWriter writer;
    private TransferReader reader;

    @Mock
    private HashMap<Integer, Account> accounts;

    @BeforeEach
    void initialize() {
        bank = new Bank(writer, reader, accounts);

    }

    @Test
    void createAccount_NonDuplicateID_CreatesNewAccount() {
        int accountNumber = bank.createAccount("Test", 2000);

        verify(accounts).put(argThat(acc -> acc == accountNumber),
                argThat(acc -> acc.getAccountHolder().equals("Test")));
    }

    @Test
    void createAccount_DuplicateID_CreatesNewID() {}
}

标签: javaunit-testingmocking

解决方案


推荐阅读