我有以下代码
@PrepareForTest({Mongo.class, XYMongo.class, DB.class})
public class XYMongoTest extends UnitTest{
String host = Play.configuration.getProperty("mongo.host");
int port = Integer.parseInt(Play.configuration.getProperty("mongo.port"));
String name = Play.configuration.getProperty("mongo.name");
@Test
public void testRetrieveMongoDBSuccessful() throws UnknownHostException, MongoException, Exception
{
Mongo mongoMock = mock(Mongo.class);
DB mockDB = mock(DB.class);
PowerMockito.whenNew(Mongo.class).withArguments(host, port).thenReturn(mongoMock);
when(mongoMock.getDB(name)).thenReturn(mockDB);
XYMongo.getMongoDB();
verify(mongoMock.getDB(name));
}
@Test
public void testRetrieveMongoDBFailUnkownHost() throws Exception
{
try
{
PowerMockito.mockStatic(Mongo.class);
PowerMockito.whenNew(Mongo.class).withArguments(host, port).thenThrow(new UnknownHostException("Test Exception"));
XYMongo.getMongoDB();
PowerMockito.verifyNew(Mongo.class).withArguments(host, port);
}
catch (Exception e)
{
assertEquals("Test Exception", e.getMessage());
}
}}第一个测试通过良好,第二个测试失败,测试错误为
失败,expected:但was:<缺失方法在这里调用验证(模拟):正确验证示例中的->:Failure (Exception>).doSomething()也可能会出现此错误,因为您验证了以下两个方法中的任何一个:expected:/equals()/hashCode()方法。这些方法不能被删减/验证。>
有什么办法解决这个问题吗?试过了我能想到的一切。
谢谢
保罗
发布于 2011-09-28 02:47:14
这个错误实际上来自testRetrieveMongoDBSuccessful();看起来您的verify()不太正确,但是莫基托在下次与它交互之前不能告诉您这一点。
尝试将testRetrieveMongoDBSuccessful()的最后一行替换为:
verify(mongoMock).getDB("name");
https://stackoverflow.com/questions/7570386
复制相似问题