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のモックは機能しています。