我想模拟 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();
问题:模拟不适用于数据源,它始终为空,但是 InitialContext 的模拟正在工作。
最佳答案
如果您想让 PowerMock.replayAll
工作,我认为您需要使用 PowerMock.createMock
而不是 EasyMock.createMock
。
关于java - 模拟 jdbc 数据源时遇到的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538060/