assertEquals 方法的返回值 returns 一个动态值
assertEquals the returned value of method which returns a dynamic value
问题描述-
我正在尝试测试我的登录方法,其中 returns 一个 AuthenticationResponse 的对象,其中包含四个字段 - 用户名、jwt 令牌、刷新令牌和 jwt 令牌的到期时间。
public class **AuthenticationResponse** {
private String userName;
private String jwtToken;
private Instant expiresAt;
private String refreshToken;
}
我的登录方法(方法待测)在AuthServiceclass.
@Service
public class AuthService
{
public AuthenticationResponse login(LoginRequest loginRequest)
{
//some logic going on...
Instant expiresAt=Instant.now().plusMillis(900*1000);
//some logic going on
return authenticationResponse;
}
}
我的测试class是这样的->
public class AuthServiceTest
{
@InjectMocks
private AuthService authService;
@Test
public void loginTest_whenCredentialsAreCorrect()
{
///some logic goes over here...
AuthenticationResponse authenticationResponse=new AuthenticationResponse();
authenticationResponse.setJwtToken("jwttest");
authenticationResponse.setUserName("jack");
authenticationResponse.setRefreshToken("jwt1");
authenticationResponse.setExpiresAt(Instant.now().plusMillis(900000));
assertEquals(authenticationResponse,authService.login(loginRequest));
}
}
我已经在为 expiresAt 字段赋值的方法中编写了我的逻辑,如下所示
Instant expiresAt=Instant.now().plusMillis(900*1000)
现在,我如何在创建 AuthenticationResponse 对象时为该字段 (expiresAt) 分配相同的值以使用方法的返回值断言它。
我无法通过任何方式将此字段的值与方法返回的值相匹配。
我的测试失败并显示此输出:
org.opentest4j.AssertionFailedError:
预期:AuthenticationResponse(userName=jack, jwtToken=jwttest, expiresAt=2020-07-30T13:40:45.828Z, refreshToken=jwt1)
实际:AuthenticationResponse(userName=jack, jwtToken=jwttest, expiresAt=2020-07-30T13:40:45.840Z, refreshToken=jwt1)
有什么办法可以解决这个问题吗??
您可以模拟 expiresAt 值。
请参阅下面 link 以找到执行此操作的各种方法。
https://www.baeldung.com/java-override-system-time
问题描述- 我正在尝试测试我的登录方法,其中 returns 一个 AuthenticationResponse 的对象,其中包含四个字段 - 用户名、jwt 令牌、刷新令牌和 jwt 令牌的到期时间。
public class **AuthenticationResponse** {
private String userName;
private String jwtToken;
private Instant expiresAt;
private String refreshToken;
}
我的登录方法(方法待测)在AuthServiceclass.
@Service
public class AuthService
{
public AuthenticationResponse login(LoginRequest loginRequest)
{
//some logic going on...
Instant expiresAt=Instant.now().plusMillis(900*1000);
//some logic going on
return authenticationResponse;
}
}
我的测试class是这样的->
public class AuthServiceTest
{
@InjectMocks
private AuthService authService;
@Test
public void loginTest_whenCredentialsAreCorrect()
{
///some logic goes over here...
AuthenticationResponse authenticationResponse=new AuthenticationResponse();
authenticationResponse.setJwtToken("jwttest");
authenticationResponse.setUserName("jack");
authenticationResponse.setRefreshToken("jwt1");
authenticationResponse.setExpiresAt(Instant.now().plusMillis(900000));
assertEquals(authenticationResponse,authService.login(loginRequest));
}
}
我已经在为 expiresAt 字段赋值的方法中编写了我的逻辑,如下所示
Instant expiresAt=Instant.now().plusMillis(900*1000)
现在,我如何在创建 AuthenticationResponse 对象时为该字段 (expiresAt) 分配相同的值以使用方法的返回值断言它。
我无法通过任何方式将此字段的值与方法返回的值相匹配。
我的测试失败并显示此输出:
org.opentest4j.AssertionFailedError:
预期:AuthenticationResponse(userName=jack, jwtToken=jwttest, expiresAt=2020-07-30T13:40:45.828Z, refreshToken=jwt1)
实际:AuthenticationResponse(userName=jack, jwtToken=jwttest, expiresAt=2020-07-30T13:40:45.840Z, refreshToken=jwt1)
有什么办法可以解决这个问题吗??
您可以模拟 expiresAt 值。 请参阅下面 link 以找到执行此操作的各种方法。 https://www.baeldung.com/java-override-system-time