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

有人能为这段代码建议一个mockito测试吗?

艾翼
2023-03-14
public List<String> getTopics(String user, String repo){
    GitHubRequest request = new GitHubRequest();
    List<String> topic_list = new ArrayList<>();
    try {
        Repository repository = repositoryService.getRepository(user,repo);
        String url =  repository.getUrl().split("//")[1].split("api.github.com")[1];
        request.setUri(url + "/topics");
        String result = new BufferedReader(new InputStreamReader(gitHubClient.getStream(request)))
                .lines().collect(Collectors.joining("\n"));
        JSONObject jsonObject = new JSONObject(result);
        topic_list = Arrays.stream(jsonObject.get("names").toString().replace("[", "").replace("]", "").split(",")).collect(Collectors.toList());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return topic_list;
}

共有1个答案

许正平
2023-03-14

首先,您需要将模拟对象(repositoryService,gitHubClient)注入到您的函数中。

如果使用Spring/Spring Boot,可以考虑使用@mock和@mockbean注释。来嘲笑必要的bean。

下面的代码手动创建模拟对象。

RepositoryService fakeRs = Mockito.mock(RepositoryService.class);
GitHubClient fakeGHC = Mockito.mock(GitHubClient.class);
ReflectionTestUtils.setField(yourService, "repositoryService", fakeRs);
ReflectionTestUtils.setField(yourService, "gitHubClient", fakeGHC);
    @Test
    public void testGetTopics(){
       // init mock object code in case setter/getter/reflection utils
       Repository expectedRepository = createExampleRepository();
Mockito.when(repositoryService.getRepository(Mockito.anyString(),Mockito.anyString())
.thenReturn(expectedRepository);

     // continue to fake gitHubClient with your expected data/ exceptions...
    //call your method
    List<?> data = yourService.getTopic("user","data");
    Assertions.assertTrue(data!=null); 
   // you can write few assertion base on your fake datas
    }
 类似资料:
  • 你好,我是java的新手,我对如何编写JUnit测试感到困惑,有人能帮忙吗? 任务说明: 当您将自动取款机(ATM)与银行卡一起使用时,您需要使用个人识别码(PIN)来访问您的帐户。如果用户在输入PIN码时失败三次以上,机器将阻止该卡。 假设用户的PIN是“1234”,编写一个程序,向用户索要PIN不超过三次,并执行以下操作: 如果用户输入了正确的号码,请打印一条消息,说明“您的PIN是正确的”,

  • 我有这两种方法。我理解“getTotalSalary”一词,但并不真正理解“getAverageSalary(获取平均工资)”的写作方式。我不明白为什么在结尾处使用问号和冒号以及“(size()!=0)”和0。 这是编码: empReg 是 ArrayList 的名称。员工是一个由“姓名”和“薪水”组成的阶级。getSalary 显然是一种返还薪水的方法。

  • 我这里有一些关于Java的练习问题。我们应该在不使用编译器的情况下确定答案。 参考以下方法: 调用product(6)时的输出是什么? D)48 E)70 根据答案,正确的输出是48。我真的不明白为什么这是真的。6不符合基本情况,所以转到else语句。那么,乘积(6-2)=乘积(4),乘积(2)得到乘积(0),乘积(2)得到乘积(0),得到6*4,4*2,2*0,0*0。但那是32,不是48?是不

  • 我写了这个和我从谷歌和其他来源看到的一些部分,但我不能理解公共静态int[]直方图中的else部分 这个新Arr[计数]如何;作品有人可以向我解释,请

  • 问题内容: 我只是在android上开始,而我的java很生锈。我不记得曾经见过像这样嵌套在另一个函数中的函数。有人可以向我确切解释final的作用,并解释为什么您要在另一个函数中嵌套这样的功能吗? 问题答案: 这是一个匿名类。实际发生的情况是正在使用重写的函数创建 的子类。 关于匿名类的最优雅的事情之一是,它们使您可以在需要的地方准确定义单发类。此外,匿名类具有简洁的语法,可减少代码中的混乱情况

  • 您好,我是java新手,我对如何编写JUnit测试感到困惑,有人能帮我吗? 任务说明: 当您将自动取款机(ATM)与银行卡一起使用时,您需要使用个人识别码(PIN)来访问您的帐户。如果用户在输入PIN码时失败三次以上,机器将阻止该卡。 假设用户的PIN为“1234”,编写一个程序,要求用户输入PIN不超过三次,并执行以下操作: 如果用户输入了正确的号码,请打印一条消息,说明“您的PIN是正确的”,