Cómo burlarse del constructor InitialContext en pruebas unitarias

cuando trato de burlarme del siguiente método (el método está usando una llamada EJB remota para la lógica de negocios) para la prueba Junit, da javax.naming.NoInitialContextException

private void someMethod(int id1, int id2, HashMap map){
    ......some code........

    Context ctx = new InitialContext();
    Object ref = ctx.lookup("com.java.ejbs.MyEJB");

    EJBHome ejbHome = (EJBHome)PortableRemoteObject.narrow(ref, EJBHome.class);
    EJBBean ejbBean = (EJBBean)PortableRemoteObject.narrow(ejbHome.create(), EJBBean.class);
    ejbBean.someMethod(id1,name);

    .......some code.......}

Mi prueba de unidad para el método anterior

@Test
public void testsomeMethod() throws Exception {

    .......setting initial code...
    //Mock context and JNDI

    InitialContext cntxMock = PowerMock.createMock(InitialContext.class);
    PowerMock.expectNew(InitialContext.class).andReturn(cntxMock);
    expect(cntxMock.lookup("com.java.ejbs.MyEJB")).andReturn(refMock);               

    ..........some code..........

    PowerMock.replayAll();
    Whitebox.invokeMethod(ObjectOfsomeMethodClass, "someMethod", id1, id2, map);


}

cuando elWhitebox.invokeMethod (ObjectOfsomeMethodClass, "someMethod", id1, id2, map) El método invoca da la siguiente excepción.

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)

Creo, aunque nos burlamos delContexto en el método de prueba, no utiliza el objeto simulado al llamarWhitebox.invokeMethod (ObjectOfsomeMethodClass, "someMethod", id1, id2, map) método, en lugar de eso, está tratando de invocar elContexto ctx = new InitialContext (); método en el método original (someMethod).

Respuestas a la pregunta(4)

Su respuesta a la pregunta