Philipp Mayer
09/29/2021, 8:51 AMdata class User(
    val id: String,
    val someTime: LocalDateTime,
    val someDetails: SomeDetails,
) {
    data class SomeDetails(
        val otherId: String,
        val otherTime: LocalDateTime,
    )
}
val user = User(
    id = "1",
    someTime = LocalDateTime.now(),
    someDetails = User.SomeDetails(
        otherId = "a",
        otherTime = LocalDateTime.now().plusSeconds(1)
    )
)
val otherUser = User(
    id = "1",
    someTime = LocalDateTime.now().plusHours(1),
    someDetails = User.SomeDetails(
        otherId = "a",
        otherTime = LocalDateTime.now().plusSeconds(22)
    )
)LocalDateTimeclass SomeTest {
    @Test
    fun `should ignore localdatetime fields`() {
        user.shouldBeEqualToIgnoringFields(otherUser, User::someTime, User.SomeDetails::otherTime)
    }
}thanksforallthefish
09/29/2021, 11:25 AMuser should {
  check one by one
}withConstantNow"test" {
  withConstantNow(LocalDateTime.now()) {
    user shouldBe otherUser
  }
}withConstantNowLocalDateTime.nowPhilipp Mayer
09/29/2021, 11:31 AMuser.asClue {
  ..comparing all properties..
}thanksforallthefish
09/29/2021, 12:25 PMClock"test" {
  User(Clock.fixed("fixed time"))
}
data class User(private val clock: Clock) {
  val date = LocalDateTime.now(clock)
}LeoColman
09/30/2021, 6:36 PMLeoColman
09/30/2021, 6:36 PMLeoColman
09/30/2021, 6:37 PMLeoColman
09/30/2021, 6:37 PM