在我的 Vaadin 和 Spring Boot 应用程序中,我已从 jOOQ 3.14.12 更新到 3.15.0。此更新后,我的应用程序不再启动。这是我得到的错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in org.komunumo.data.service.MemberService required a bean of type 'org.jooq.DSLContext' that could not be found.
Action:
Consider defining a bean of type 'org.jooq.DSLContext' in your configuration.
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我必须定义这个 bean,因为使用 jOOQ 3.14.12 我没有必要。据我所知,这是JooqAutoConfiguration自动完成的。
我正在使用Java 1.8.0_131,Mockito 2.8.47和PowerMock 1.7.0。我的问题与PowerMock无关,它已发布给Mockito.when(…)匹配器。
我需要一种模拟此方法的解决方案,该方法由我的受测类调用:
public static <T extends Serializable> PersistenceController<T> createController(
final Class<? extends Serializable> clazz,
final Supplier<T> constructor) { … }
Run Code Online (Sandbox Code Playgroud)
从被测类中调用该方法,如下所示:
PersistenceController<EventRepository> eventController =
PersistenceManager.createController(Event.class, EventRepository::new);
Run Code Online (Sandbox Code Playgroud)
为了进行测试,我首先创建了我的模拟对象,该对象应在调用上述方法时返回:
final PersistenceController<EventRepository> controllerMock =
mock(PersistenceController.class);
Run Code Online (Sandbox Code Playgroud)
那很简单。问题在于方法参数的匹配器,因为该方法将泛型与供应商结合使用作为参数。以下代码按预期编译并返回null:
when(PersistenceManager.createController(any(), any()))
.thenReturn(null);
Run Code Online (Sandbox Code Playgroud)
当然,我不想返回null。我想返回我的模拟对象。由于泛型,因此无法编译。为了符合类型,我必须编写如下内容:
when(PersistenceManager.createController(Event.class, EventRepository::new))
.thenReturn(controllerMock);
Run Code Online (Sandbox Code Playgroud)
这样可以编译,但是my中的参数不是匹配器,因此匹配不起作用,并且返回null。我不知道如何编写一个匹配器来匹配我的参数并返回我的模拟对象。你有什么主意吗?
非常感谢Marcus
在我的 GitHub 存储库中,我想将更新机器人配置为自动合并所有次要(和较小)更新,并仅为主要更新创建 PR。如果我正确理解该文档,我的包规则应该配置该行为:
{
"extends": [
"config:base",
":disableDependencyDashboard"
],
"ignorePaths": [
"Dockerfile",
"package.json",
"pnpm-lock.yaml"
],
"assignees": [
"McPringle"
],
"reviewers": [
"McPringle"
],
"packageRules": [
{
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
"automerge": true
},
{
"matchDepTypes": ["devDependencies"],
"automerge": true
}
]
}
Run Code Online (Sandbox Code Playgroud)
但翻新机器人不会合并次要更新。尽管如此,所有内容都以 PR 的形式出现,我必须手动合并。这是一个例子:
- <version>2.6.1</version>
+ <version>2.6.2</version>
Run Code Online (Sandbox Code Playgroud)
此补丁更新应该会自动合并。有人可以解释一下我的理解和做错了什么吗?在这里你可以找到我正在谈论的 GitHub 存储库,包括更新配置文件和 PR,我现在还没有合并它们: https: //github.com/komunumo/komunumo-server
generics ×1
github ×1
java ×1
jooq ×1
matcher ×1
mockito ×1
r2dbc ×1
renovate ×1
spring ×1
spring-boot ×1
spring-data ×1
unit-testing ×1