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

我们可以在Java中有条件地模拟一个对象吗?[副本]

贺季同
2023-03-14
//@Mock //I want to mock this only for authentication
CloseableHttpClient httpClient;

 //when(httpClient.execute(any(HttpUriRequest.class))).thenReturn(someResponse);

response = httpClient.execute(httpUriRequest);

共有1个答案

常智勇
2023-03-14

谢谢大家的回应。

我用mockito.spy()解决了这个问题。

如果将来有人发现我的解决方案有用,就放弃我的解决方案。

    @Test
    public void myTest(){

    //This object will be a normal instance
    CloseableHttpClient httpClient;

    //Authentication: /oauth/token
    //response is real because httpClient is an actual instance.
    response = httpClient.execute(httpUriRequest);

    CloseableHttpClient spyHttpClient = Mockito.spy(httpClient);
    doReturn(mockedCloseableHttpResponse).when(spyHttpClient).execute(any(HttpUriRequest.class));

    //Actual API call: /v1/users
    //response is mockedCloseableHttpResponse because httpClient is a spy instance.
    response = httpClient.execute(httpUriRequest);

    //Assertion code here

    }
 类似资料:
  • 我在SCJP6中读到抽象类不能实例化。但在某个地方读到它们可以实例化。是真的吗?我是Java的新手,希望有人能详细解释一下。一个例子也是很好的。

  • 问题内容: 在我的一次采访中,有人问我“我们是否可以实例化一个抽象类?” 我的回答是“不,我们不能。” 但是,面试官告诉我“错了,我们可以。” 我对此有些争论。然后他告诉我自己在家尝试这个。 在这里,我正在创建我的类的实例和抽象类的调用方法。有人可以向我解释一下吗?面试中我真的错了吗? 问题答案: 在这里,我正在创建我的课程的实例 不,你不是在这里创建抽象类的实例。而是要创建抽象类的匿名子类的实例

  • 这是我的代码: 如果年龄是15岁会发生什么?嗯,它给了我一个错误。所以我想知道是否有可能在案例中包含一个条件。例如, 我可以使用if语句,但我想知道是否可以使用开关。

  • 问题内容: …不知道’mock’是否正确。 无论如何,我有一个继承的代码库,我试图为此编写一些基于时间的测试。为了 不太 含糊,该代码与查看某项的历史并确定该项是否基于时间阈值有关。 在某些时候,我还需要测试向该历史记录中添加一些内容,并检查阈值现在是否已更改(并且显然正确)。 我遇到的问题是我正在测试的部分代码使用对time()的调用,因此基于我的事实,我发现很难确切知道阈值时间应该是多少。我不

  • 我们正在使用DropWizard v0.8.1,我们想知道我们是否可以有一个默认值的YAML文件,然后将被特定的环境文件(如)覆盖。 Spring boot以这种方式工作,其中文件充当默认值的模板,然后将覆盖重复的属性。 我们不想复制所有重复的属性,只想在一个文件中更新默认值。