2

Util クラスでtoBeMockedFunctionという名前の静的関数をモックします。このメソッドはpublic static void メソッドであるtoBeUnitTestedから呼び出されます。toBeMockedFunction で何もしたくない。部分的なモックとスタブ化の多くのアプローチ (そのような 2 のスニペットが投稿されています) を試しましたが、成功しませんでした。

私が間違っていることを提案してください。

public class Util {
    // Some code
    public static void toBeUnitTested(CustomObject cb, CustomObject1 cb1, List<CustomObject2> rows, boolean delete) {
        // some code

       toBeMockedFunction(cb, "test", "test");
    }

    public static CustomObject toBeMockedFunction(CustomObject cb, String str1) {
        // some code
    }

}

以下は私のjunitクラスです

@RunWith(PowerMockRunner.class)
 @PrepareForTest({ Util.class})
 public class UtilTest {
    @Test
    public void Test1() {
        PowerMockito.spy(Util.class);            

 //mock toBeMocked function and make it do nothing 
 PowerMockito.when(PowerMockito.spy(Util.toBeMockedFunction((CustomObject)Mockito.anyObject(), Mockito.anyString()))).thenReturn(null);

        Util.toBeUnitTested(cb, "test", "test");
     }
  }
  1. アプローチ2

      PowerMockito.mockStatic(Util.class);  
      PowerMockito.when(Util.toBeUnitTested((CustomObject)Mockito.anyObject(),Mockito.anyString())).thenCallRealMethod();
        Util.toBeUnitTested(cb, "test", "test");
    
4

1 に答える 1