首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让Mockito和Powermock正确抛出错误

让Mockito和Powermock正确抛出错误
EN

Stack Overflow用户
提问于 2011-09-27 13:57:07
回答 1查看 2.7K关注 0票数 2

我有以下代码

代码语言:javascript
复制
@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()方法。这些方法不能被删减/验证。>

有什么办法解决这个问题吗?试过了我能想到的一切。

谢谢

保罗

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-28 02:47:14

这个错误实际上来自testRetrieveMongoDBSuccessful();看起来您的verify()不太正确,但是莫基托在下次与它交互之前不能告诉您这一点。

尝试将testRetrieveMongoDBSuccessful()的最后一行替换为:

verify(mongoMock).getDB("name");

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7570386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档