1

DatasourceとInitialContextをモックして、コンテナーの外部のデータベースに接続したいと思います。これは私がモックを使用したいロジックです:

        Connection con = null;
        Context context = new InitialContext();
        DataSource datasource = (DataSource) context.lookup("jdbc/chu");
        con = datasource.getConnection();

これが私が進めた方法です

        // create the Connection
        connection = createMyConnection();//connection i construct manually 
        // Mock the Datasource
        DataSource datasourceMock = EasyMock.createMock(DataSource.class);
        EasyMock.expect(datasourceMock.getConnection())
                                      .andReturn(connection).anyTimes();
        // Mock the context
        Context contextMock = EasyMock.createMock(InitialContext.class);
        EasyMock.expect((DataSource)contextMock.lookup("jdbc/chu"))
                                     .andReturn(datasourceMock)
                                     .anyTimes();
PowerMock.expectNew(InitialContext.class).andReturn((InitialContext)contextMock);


        // run the mock
        PowerMock.replayAll();

問題:モックはデータソースに対して機能しません。常にnullですが、InitialContextのモックは機能しています。

4

1 に答える 1

0

働きたいのではPowerMock.createMockなく、使う必要があると思います。EasyMock.createMockPowerMock.replayAll

于 2012-05-10T18:40:04.440 に答える