想使用 @SpyBean 注解部分 Mock 掉业务逻辑里的数据库 CRUD 方法,但在运行测试时会因为业务逻辑类间存在循环依赖报错(这块目前改不了...)。还有什么方法可以部分 Mock 方法但不会因为循环依赖报错吗?实在不行就还是调数据库吧...
2
nothingistrue 2023-01-04 09:12:37 +08:00
改成 @MockBean 外加手动 Spy 的方式,太困难就建议放弃单元测试。存在循环依赖的情况下,做单元测试这种行为就是耍流氓。
|
3
jaredyam OP 还是一样的报错
|
4
cubecube 2023-01-04 09:34:57 +08:00
@nothingistrue 可以把单元放大再测试,把循环部分包进去
|
5
jaredyam OP @nothingistrue 反着来的话确实有些麻烦
|
6
nothingistrue 2023-01-04 09:43:49 +08:00 1
|
7
nothingistrue 2023-01-04 09:48:08 +08:00
CRUD 方法涉及到基础设施,其实是很难 Mock 、Spy 的,基本上都避免不了手写脚本。Spring 的单元测试,只有在结合 Spring Data JPA 的情况下,才能避免大量的数据库脚本处理。或者换句话说,没用 Spring Data JPA ,就别搞涉及到数据库操作的单元测试。
|
8
cubecube 2023-01-04 09:49:45 +08:00
@nothingistrue ok 。。没认真看题,原来是 db 相关的
|
9
zhenjiachen 2023-01-04 11:45:35 +08:00 via iPhone
同意 6 楼,如果用到了数据库的唯一特性就用 devcontainers
|