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

如何编写单元测试用例或模拟改造

方光华
2023-03-14

我正在尝试编写用于修改的单元测试用例,我正在使用它来进行Google Api调用,以从Google令牌中提取细节。请帮助mw模拟这堂课

Tech Stack Springboot(JUnit 4)mockito

我想为这个函数写测试用例这是我的功能

public String extractGmail(String googleToken) throws IOException {

    final Call<GmailDTO> call = googleTokenValidatorAPI.authenticateUsingGmail(googleToken);
    final Response<GmailDTO> response = call.execute();

    if (response.isSuccessful() && response.body().getHd().equals("nineleaps.com")) {
        return response.body().getEmail();
    }
    throw new Unauthorized("Token Invalid");
}
private String atHash;
private String sub;
private boolean emailVerified;
private String kid;
private String iss;
private String typ;
private String givenName;
private String locale;
private String picture;
private String aud;
private String azp;
private String name;
private String hd;
private long exp;
private String familyName;
private long iat;
private String alg;
private String email;
private String jti;

}

这是我用于改装的配置

@Configuration公共类GmailLoginConfig{

@Bean
public GoogleTokenValidatorAPI googleTokenValidatorAPI() {
    Retrofit retrofit = new Retrofit.Builder().baseUrl("https://www.googleapis.com/")
            .addConverterFactory(GsonConverterFactory.create()).build();
    return retrofit.create(GoogleTokenValidatorAPI.class);
}
@POST("oauth2/v3/tokeninfo")
Call<GmailDTO> authenticateUsingGmail(@Query("id_token") String token);

共有1个答案

雷骁
2023-03-14

我现在还没有一个带有改型的项目来确认答案,但是您应该:

  1. 选择要运行的测试类型:单元测试、集成测试等?
  2. 选择正确的工具

假设您要运行单元测试,这意味着您应该将GoogleTokenValidatorAPI接口视为常规java接口。单元测试不会启动spring,也不会使用任何类型的HttpConnection,因此您不必特别对改装做任何事情:

GMailDTO expectedDTO = new GMailDTO(...);
Response<GMailDTO> expectedResponse = Response.success(expectedDTO);
Call<GmailDTO> call = Mockito.mock(Call.class);
Mockito.when(call.execute()).thenReturn(expectedResponse);

GoogleTokenValidatorAPI googleTokenValidatorAPI = Mockito.mock(GoogleTokenValidatorAPI.class);

Mockito.when(googleTokenValidatorAPI.authenticateUsingGmail(googleToken)).thenReturn(call);
....
 类似资料:
  • 问题内容: 我有一个Java课。如何进行 单元测试? 就我而言,我有课做一个二进制和。它需要两个数组,将它们求和,然后返回一个新的二进制数组。 问题答案: 使用正确的输入定义正常情况下的预期和期望输出。 现在,通过声明一个类来实现测试,将其命名为任何东西(通常是类似TestAddingModule之类的东西),并向其添加testAdd方法(即,类似于下面的方法): 编写一个方法,并在其上方添加@T

  • 在尝试连接数据库并获得连接尝试失败时,所有这些测试用例都失败了。和异常,因为它没有获取信息。 我对spring boot framework和JUnit几乎是新手,希望帮助我理解这一点以及编写单元测试用例的正确方法。

  • 问题内容: 我刚开始使用Node,现在正在编写一些单元测试。对于前几个函数,我可以正常运行,但是现在我碰到了一个包含其中的函数。我的函数的简化版本如下所示: 我尝试使用基本节点断言测试库进行测试: 由于执行此操作的时间(以及结果)总是不同的,因此它将始终失败。 在Python中,我可以设置模拟类和对象。有没有一种方法可以在Node中解决此问题而无需将moment.utc()作为函数的参数? 问题答

  • 我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担

  • 试图弄清楚我是否可以使用spring kafka和spring kafka测试为@KafkaListener编写单元测试。 我的听众课。 我的测试类别: 我的测试配置类: 有什么简单的方法可以做到这一点吗? 或者我应该以其他方式测试@KafkaListener?在单元测试中,如何确保在Kafka中收到新消息时调用@KafkaListener。

  • 我在java中使用mockito编写单元测试。 这就是我要测试的声明。 电影是电影名称的集合,是识别电影的关键。 我嘲笑了守望者班 Mockito.when(watcher.watch(Matchers.any(Set.class))) “thenReturn”中包括什么??