当前位置: 首页 > 知识库问答 >
问题:

模拟已被模拟的其他函数调用的函数

嵇丰
2023-03-14

我正在尝试模拟静态函数(getBatchId()和sendPost())以获得以下代码:

public void doPost(){      
String batchId = Utility.getBatchId();
                    Post post = new Post(batchId, userId, message);
                    String postJson = Utility.toJson(post);
                          Chat.sendPost(url,postJson)
}

上述方法的单元测试用例代码:

 mockStatic(Utility.class);
        when(Utility.getBatchId()).thenReturn("demoBatchId1234");

        mockStatic(Chat.class);
        when(Chat.sendPost(url,postJson))
                .thenReturn(CompletableFuture.supplyAsync(() -> HttpResponse.create()));

共有1个答案

柳向明
2023-03-14

如果您想模拟不同类中的静态方法,那么您需要使用Junit为测试准备所有这些类,如:

@PrepareForTest({Chat.class,Utility.class})
 类似资料:
  • 我正在为我的java类编写测试类。我将Junit5与Mockito一起使用。 我使用的Junit5与Power Mockito不兼容,所以我只使用Mockito。 我有,它具有下面这样的函数,并且在构造函数中初始化了。 当我编写测试用例时,我模拟了,但是由于我们在一个方法中创建,我如何模拟,这样我就可以编写期望值,根据我在测试类中设置的选择获得值?

  • 我试图模拟静态,但收到如下错误消息 我的测试类实现就像

  • 问题内容: 我想将构造函数模拟为方法。 在我的测试中,我想做这样的事情: 但是给我这个 错误 知道为什么吗? 问题答案: 您可以使用PowerMock模拟构造函数。 如果由于某种原因而无法使用PowerMock,则最可行的解决方案是将工厂注入到包含此方法的任何类中。然后,您将使用工厂创建对象并模拟工厂。

  • 我有一个jUnit测试,测试我的一个函数。在这个函数中,我调用了另一个类的方法,我想用mockito模拟这个方法。然而,我似乎不能实际嘲笑这一点。下面是我的jUnit测试的样子: 编辑:在我的MainClassImTesting()中。我正在调用的test()函数,它调用authenticateUser()并向它传递一个hashMap。

  • 问题内容: 我的课如下: 在构造函数中的逻辑和是我试图嘲弄的事情。我想要任何调用:返回一个虚拟字符串。 我试过了: 但这似乎不起作用。仍在执行构造函数逻辑,而不是获取的模拟对象。 问题答案: 您发布的代码适用于最新版本的Mockito和Powermockito。也许您还没有准备A?试试这个: A.java MockA.java 两项测试均应通过Mockito 1.9.0,powermockito

  • 我需要一些关于如何使用ScalaMock在类内模拟高阶函数的帮助 正如您在上面的代码中所看到的,当您传入一个具有高阶函数的值时,被模拟的函数可以正常工作,但如果您在每个位置键入它,则不会正常工作。在我的用例中,我不能像在第二次测试中那样做 下面是关于用例的更多信息,但对回答这个问题并不完全必要 这是一个简化的示例,但我需要一种方法使前者工作。原因是(我会尽我最大的努力解释这一点)我有一个正在测试的