java - 使用 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() {}
}
解决方案
推荐阅读
- spring-jms - Spring Boot 中的 XA 事务
- asp.net-mvc - 如何在 AD B2C 中使用图形 api/sdk
- next.js - Nextjs 页面加载了两次,因此失败
- javascript - 为什么 phaser.js 显示整个 sprite-sheet 而不是它的单个帧?
- python - 以编程方式构建代理时,无法使用 webview 向浮士德代理/主题发送消息
- python - Pandas 和 Numpy 版本的问题
- telegram - 如何使用 python-telegram-bot 库从测验中识别用户答案
- python - 在 Python 中,如何在不更改输入数据的情况下用数字减去 x 轴标签
- javascript - Express.js 在单个导出的路由器对象中返回多个路由返回不正确的路由
- docker - 如何在 docker 中公开 .NET Framework 控制台应用程序端口?