我試圖嘲笑DateTimeFormatter類。我已經做了以下情況:模擬java.time.format.DateTimeFormatter類
@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(..)靜態方法
我在做什麼錯了?
*爲什麼*你想模擬'DateTimeFormatter',出於興趣?你爲什麼不用一個真正的?我會對過分嘲諷保持警惕 - 它會使測試變得更加脆弱(並且難以閱讀),而不是簡單地使用真實的代碼或者具有大致相同行爲的假貨。 – 2015-02-24 13:47:11
聽起來像單元測試運行模擬我... – duffymo 2015-02-24 13:47:47
我通過格式化程序的類使用它來格式LocalDateTime.now(ZoneId.of(「UTC」));'。格式化的字符串然後被進一步用於生成另一個字符串。我需要確保字符串正確生成。所以我需要從格式化程序返回一致的日期或模擬'LocalDateTime.now(..)'靜態方法 – 2015-02-24 13:54:08