有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (3) 个答案

  1. # 1 楼答案

    使用mockito。任何

    例如,如果myobj mymethod接受string、string、bar

    中断通话

    Mockito.when(myojb.myMethod(Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)))
        .thenReturn(amockedobject);
    

    为了证实史蒂文已经给出了答案

    Mockito.verify(myojb).myMethod(
        Mockito.anyString(),Mockito.anyString(),Mockito.any(Bar.class)));
    
  2. # 2 楼答案

    创建一个包装类,该类调用real方法并填充除您提供的参数之外的所有参数(也称为“委托”)

    在下一次机会中,针对要求将参数移动到配置对象的项目提交一个bug

  3. # 3 楼答案

    我不太明白你在使用Mockito时遇到了什么问题。假设您创建了包含myMethod()方法的接口的模拟,那么您可以只验证您感兴趣的方法的参数。例如(假设接口名为MyInterface,并使用JUnit4):

    @Test
    public void test() {
        MyInterface myInterface = mock(MyInterface.class);
        FooBar expectedFooBar = new FooBar();        
    
        // other testing stuff
    
        verify(myInterface).myMethod(any(), any(), eq(expectedFooBar), any(), ...);
    }
    

    您需要对Mockito方法进行静态导入,才能使其正常工作。any()匹配器不关心验证时传递了什么值

    您无法避免为方法中的每个参数传递某些内容(即使它仅为NULL)