我使用以下方法获取时区偏移值,例如 GMT-3,并返回给定偏移量的 time zoneId 列表。
private static List<String> getTimeZonesByZoneOffset(final int offset) {
return ZoneId.getAvailableZoneIds()
.stream()
.filter(zoneId -> ZoneId.of(zoneId)
.getRules()
.getOffset(Instant.now())
.equals(ZoneOffset.ofHours(offset)))
.sorted()
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
然后我从我的数据库中检索与我的区域列表具有相同 zoneId 的相应记录。我在我的服务中使用了这样的方法:
public List<Product> getByOffset(int offset) {
final List<String> zones = getTimeZonesByZoneOffset(offset);
final List<Product> products = productRepository.findAllByZone(zones);
return getProductList(products);
}
Run Code Online (Sandbox Code Playgroud)
我想在单元测试中测试这两种方法。但我不确定我应该如何设置测试机制。是否有任何单元测试示例?
我想生成一个模拟List<UUID>并使用随机 UUID 填充它。但是,我不确定通过创建列表和添加项目是否有更合适的方法而不是以下方法。
List<UUID> uuidList = new ArrayList<>();
uuidList.add(UUID.randomUUID());
uuidList.add(UUID.randomUUID());
uuidList.add(UUID.randomUUID());
Run Code Online (Sandbox Code Playgroud)
那么,有没有更好的办法呢?
我试图通过将区域偏移量(例如“GMT+2”)作为字符串来获取所有 zoneId。但是,我不确定是否可以使用任何 Java 8+ 库。是否可以获得具有给定区域偏移量的所有区域 id 值?
有一个名为getAvailableZoneIds()的方法,java.time但它不带偏移参数。