首页 > 解决方案 > 无法模拟 crudrepository 保存方法

问题描述

@ExtendWith(MockitoExtension.class)
class taskTestMain {

    @InjectMocks
    task task1;


    @Mock
    private statusRepository statusRepo;

    
    
    @Mock
     status statusRec;
    @Test
    void test() {
        Mockito.when(statusRepo.save(statusRec)).thenReturn(statusRec);

        task1.method();
    }
}

class task
{
method()
{
statusRec = statusRepo.save(statusRec); //after this step I get Potential stubbing exception 

}}

我尝试了几种方法。我无法弄清楚这一点。请建议如何进行。下面我粘贴了junit错误。任务 - 严格的存根参数不匹配。请检查:

谢谢你的时间

标签: spring-bootjunitmockitospring-batchjunit5

解决方案


老实说,我对此并不完全确定,但我有一个猜测。

Mockito.when(statusRepo.save(statusRec)).thenReturn(statusRec);

有了这个存根,您只想返回传递给save方法的第一个参数?如果这是真的,那么有一种更通用的方法可以做到这一点。

when(statusRepo.save(any(TcMdhTotemConsensusStatus.class))).then(returnsFirstArg());

此存根将始终返回传递给您的save 方法的第一个参数。
有关更多信息,请参阅此 stackoverflow 帖子。如果您的 Java 或 Mockito 版本不匹配,还有一些替代方案。


推荐阅读