title: PowerMock complains of incorrect arguments even though the private method is mocked
body: <p>I was trying out PowerMock, and am trying to mock a private method like so:</p>
  
  <pre><code>expectPrivate(n, "doLogin", anyString(), anyString()).andReturn(true);
  </code></pre>
  
  <p>That is, I want <code>true</code> to be returned from <code>doLogin</code> irrespective of the parameters passed.
  The public method which delegates to this private method simply passes-on the arguments. Here is the definition of the class to be mocked:</p>
  
  <pre><code>class N {
          public boolean login(String username, String password) {
              return doLogin(username, password);
          }
          private boolean doLogin(String u, String p){
              //validate login
              //...
              //...
              return true;
          }
       }
  </code></pre>
  
  <p>And this is the test class where I am trying to invoke the mock:</p>
  
  <pre><code>import static org.junit.Assert.assertEquals;
  import static org.powermock.api.easymock.PowerMock.createPartialMock;
  import static org.powermock.api.easymock.PowerMock.expectPrivate;
  import static org.powermock.api.easymock.PowerMock.replay;
  import static org.powermock.api.easymock.PowerMock.verify;
  import static org.mockito.Matchers.anyString;
  
  import org.easymock.EasyMock;
  import org.junit.Test;
  import org.junit.runner.RunWith;
  import org.powermock.core.classloader.annotations.PrepareForTest;
  import org.powermock.modules.junit4.PowerMockRunner;
  import org.powermock.reflect.Whitebox;
  
  @RunWith(PowerMockRunner.class)
  @PrepareForTest(N.class)
  public class NodeAccessorTest {
  private String username = "admin";
  private String password = "asdf";
  
  @Test
  public void testMockLogin() throws Exception {
      N n = createPartialMock(N.class,
              "doLogin", String.class, String.class);
      boolean expected = true;
      expectPrivate(n, "doLogin", anyString(), anyString()).andReturn(expected);
      replay(n);
      boolean actual = n.login("A", "B");
      verify(n);
      assertEquals("Expected and actual did not match", expected, actual);
     }
  }
  </code></pre>
  
  <p>This is the failure trace:</p>
  
  <pre><code>java.lang.AssertionError: 
    Unexpected method call N.doLogin("A", "B"):
      N.doLogin("", ""): expected: 1, actual: 0
      at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
      at org.powermock.api.easymock.internal.invocationcontrol.EasyMockMethodInvocationControl.invoke(EasyMockMethodInvocationControl.java:91)
      at org.powermock.core.MockGateway.doMethodCall(MockGateway.java:124)
      at org.powermock.core.MockGateway.methodCall(MockGateway.java:185)
      at com.pugmarx.mock.N.doLogin(N.java)
      at com.pugmarx.mock.N.login(N.java:60)
  </code></pre>
  
  <p>So the mocking framework is not happy when specific <code>String</code>s are passed to the <code>public login()</code> method, but fine when <code>anyString</code> is used. Ideally, I would expect that since the call to the <code>private doLogin</code> is mocked, this should not be the case.
  What am I missing?</p>