在使用 LocalDate 的 kotlin 中测试包级函数
Testing Package-level function in kotlin which uses LocalDate
我有 DateUtil.kt 个文件,其中包含。
fun getFirstDayOfTheWeek(): String {
val firstDay: LocalDate = LocalDate.now(ZoneId.of(DateConstants.IST_ZONE_ID))
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
return firstDay.toString()
}
我如何测试这个?没有 class,只有功能。使用 spring 引导,
@ExtendWith(SpringExtension.class)
工作在 class 级别。
我是否仍应为它创建一个 DateUtilTest class,或者是否可以在不创建 class 的情况下进行测试?
@ExtendWith(SpringExtension::class)
class DateUtilsTest {
@Test
fun getFirstDayOfTheWeekTest() {
}
}
此外,有人可以帮忙测试一下这个功能吗?我应该模拟 LocalDate 库吗?
您不需要 SpringExtension
来测试简单的非 spring 代码。您只需要在 class 中进行简单测试。
设计此类功能时需要考虑几件事。 LocalDate.now()
使函数 不纯 。相反,这个日期应该作为函数的参数出现,这样更容易测试。使用 Kotlin,您可以使用默认值进行初始化,因此函数调用者的签名不会更改。
fun getFirstDayOfTheWeek(date: LocalDate = LocalDate.now()): String {
val firstDay: LocalDate = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
return firstDay.toString()
}
class DateUtilKt {
@Test
fun testFirstDayOfTheWeek() {
val day = getFirstDayOfTheWeek(LocalDate.of(2020, 5,22))
assertEquals("2020-05-18", day)
}
}
我有 DateUtil.kt 个文件,其中包含。
fun getFirstDayOfTheWeek(): String {
val firstDay: LocalDate = LocalDate.now(ZoneId.of(DateConstants.IST_ZONE_ID))
.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
return firstDay.toString()
}
我如何测试这个?没有 class,只有功能。使用 spring 引导,
@ExtendWith(SpringExtension.class)
工作在 class 级别。
我是否仍应为它创建一个 DateUtilTest class,或者是否可以在不创建 class 的情况下进行测试?
@ExtendWith(SpringExtension::class)
class DateUtilsTest {
@Test
fun getFirstDayOfTheWeekTest() {
}
}
此外,有人可以帮忙测试一下这个功能吗?我应该模拟 LocalDate 库吗?
您不需要 SpringExtension
来测试简单的非 spring 代码。您只需要在 class 中进行简单测试。
设计此类功能时需要考虑几件事。 LocalDate.now()
使函数 不纯 。相反,这个日期应该作为函数的参数出现,这样更容易测试。使用 Kotlin,您可以使用默认值进行初始化,因此函数调用者的签名不会更改。
fun getFirstDayOfTheWeek(date: LocalDate = LocalDate.now()): String {
val firstDay: LocalDate = date.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY))
return firstDay.toString()
}
class DateUtilKt {
@Test
fun testFirstDayOfTheWeek() {
val day = getFirstDayOfTheWeek(LocalDate.of(2020, 5,22))
assertEquals("2020-05-18", day)
}
}