Mock java.time.format.DateTimeFormatter class(模拟 java.time.format.DateTimeFormatter 类)
问题描述
我正在尝试模拟 DateTimeFormatter 类.我做了以下事情:
I'm trying to mock the DateTimeFormatter class. I've done the following:
@RunWith(PowerMockRunner.class)
@PrepareForTest({DateTimeFormatter.class})
public class UnitTest {
private DateTimeFormatter mockDateFormatter;
private AwesomeClass awesomeClass;
@Before
public void setUp() {
mockDateFormatter = PowerMockito.mock(DateTimeFormatter.class);
awesomeClass = new AwesomeClass(mockDateFormatter);
}
@Test
public void shouldToTestSomethingAwesome() {
// Other test code
PowerMockito.when(mockDateFormatter.format(any(LocalDate.class)))
.thenReturn("20150224");
// Other test code
}
AwesomeClass
使用它来格式化 LocalDateTime.now(ZoneId.of("UTC"));
.然后,格式化的字符串进一步用于生成另一个字符串.我需要确保正确生成字符串.所以我需要从格式化程序返回一致的日期或模拟 LocalDateTime.now(..) 静态方法
AwesomeClass
uses it to format LocalDateTime.now(ZoneId.of("UTC"));
. The formatted string is then further used to generate another string. I need to ensure that the string is properly generated. So I need to return a consistent date from either the formatter or mock the LocalDateTime.now(..) static method
我做错了什么?
推荐答案
模拟 LocalDateTime.now()
的替代方法是将时钟注入您的类并更改(或添加另一个)构造函数像这样:
An alternative to mocking LocalDateTime.now()
is to inject the clock into your class and change your (or add another) constructor like this:
AwesomeClass(DateTimeFormatter fmt, Clock clock) {
//instead of LocalDateTime now = LocalDateTime.now():
LocalDateTime now = LocalDateTime.now(clock);
}
然后在你的测试中:
new AwesomeClass(formatter, Clock.fixed(the time you want here));
这篇关于模拟 java.time.format.DateTimeFormatter 类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:模拟 java.time.format.DateTimeFormatter 类


基础教程推荐
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 降序排序:Java Map 2022-01-01
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01