小编liv*_*iur的帖子

使用 Clock.fixed() 模拟 LocalDate.now(clock)

当我设置特定日期时,我正在努力测试我的端点。

我不想使用 PowerMock 来模拟静态方法,而是决定更改服务的实现并使用 LocalDate.now(Clock Clock) 实现,以便更容易测试它。

我添加到我的 SpringBootApplication 类中:

@Bean
public Clock clock() {
    return Clock.systemDefaultZone();
}
Run Code Online (Sandbox Code Playgroud)

并将其自动连接到我的服务

@Autowired
private Clock clock;
Run Code Online (Sandbox Code Playgroud)

并在我的实现中使用它:

LocalDateTime localDate = LocalDateTime.now(clock);
Run Code Online (Sandbox Code Playgroud)

在测试方面我嘲笑了时钟

private final static LocalDate WEEKEND = LocalDate.of(2020, 07, 05);

@Mock
private Clock clock;
private Clock fixedClock;
Run Code Online (Sandbox Code Playgroud)

并这样使用它:

MockitoAnnotations.initMocks(this);

//tell your tests to return the specified LOCAL_DATE when calling LocalDate.now(clock)
fixedClock = Clock.fixed(WEEKEND.atTime(9, 5).toInstant(ZoneOffset.UTC), ZoneId.of("CET"));
doReturn(fixedClock.instant()).when(clock).instant();
doReturn(fixedClock.getZone()).when(clock).getZone();

ResponseEntity<String> response = restTemplate.postForEntity(base.toString(), request, String.class);
Run Code Online (Sandbox Code Playgroud)

当我调试它时,它fixedClock具有我期望的值FixedClock[2020-07-05T09:05:00Z,CET]。相反,如果我在服务实现上放置断点,则该localDate变量的值是2020-07-09- …

java testing junit mockito spring-boot

6
推荐指数
1
解决办法
8332
查看次数

在 Kotlin 中,几乎一切都是表达式并且都有值

我开始研究 Kotlin 编程语言,但我有些不清楚,我需要一些帮助来澄清它。

从理论上讲,我很清楚,在 Kotlin 中几乎所有东西都有价值。从实际层面来看,事实并非如此,我发现了这个案例。

有了这个代码:

val isUnit = println("This is an expression")
println(isUnit)
Run Code Online (Sandbox Code Playgroud)

我的输出是

This is an expression
kotlin.Unit
Run Code Online (Sandbox Code Playgroud)

所以首先它打印他的类型的值isUnit,然后打印他的类型。

但如果我这样做

val isUnit = 10
println(isUnit)
Run Code Online (Sandbox Code Playgroud)

输出将是

10
Run Code Online (Sandbox Code Playgroud)

为什么在这种情况下输出不是

10
kotlin.Int
Run Code Online (Sandbox Code Playgroud)

return-value kotlin output

1
推荐指数
1
解决办法
398
查看次数

标签 统计

java ×1

junit ×1

kotlin ×1

mockito ×1

output ×1

return-value ×1

spring-boot ×1

testing ×1