2012-02-27 3 views
1

PowerMockはプライベートメソッドをモックアウトするメソッドexpectPrivateを提供しますが、ではなくEasyMock apiにのみ表示されます。PowerMock:EasyMockのexpectPrivate()for Mockitoのやり方は?

PowerMockitoに相当するものはありますか?私はそれを見つけられなかったので、そしてthis wiki entryのために私は推測していない。実際にはPowerMockitoの動作を妨げるものではありません。だから私はこれを主に確認のために求めており、これは他の人にとって価値があると思うからです。

答えて

4

PowerMockitoはAPIから、同様にプライベートメソッドを模擬する方法を提供する:

<T> WithOrWithoutExpectedArguments<T> when(Object instance, Method method) 
Expect calls to private methods. 


verifyPrivate(Object object, org.mockito.verification.VerificationMode verificationMode) 
     Verify a private method invocation with a given verification mode. 

上述のタイプの他のシグネチャの束があります。

例:

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.powermock.api.mockito.PowerMockito; 
import org.powermock.core.classloader.annotations.PrepareForTest; 
import org.powermock.modules.junit4.PowerMockRunner; 

import static org.mockito.Matchers.eq; 

@RunWith(PowerMockRunner.class) 
@PrepareForTest(Foo.class) 
public class SimpleTest { 

    @Test 
    public void testHello() throws Exception { 
     Foo foo = PowerMockito.spy(new Foo()); 
     foo.sayHello(); 
     PowerMockito.verifyPrivate(foo).invoke("hello", eq("User")); 
    } 
} 

class Foo { 
    public void sayHello() { 
     System.out.println(hello("User")); 
    } 

    private String hello(String user) { 
     return "Hello " + user; 
    } 
} 
+0

うーん、彼らはそれをより多くの類似した名前を与えていないことを奇妙な。 'verifyPrivate'は質問の一部ではありませんが、例を挙げれば私はあなたの答えを受け入れます(私はそれを自分でやっていますが、それを質問に追加するのではなく、他人の答えにするべきです)。 – ArtB

+0

はい、私は彼らがMockitoに似ているように命名を選ぶと思います。私は要求通りに例を追加しました。 – ebaxt

+0

ありがとう!この例は他人の利益のためであり、S.O.それほど熟練していない人にとっては良いリソースです。 – ArtB