小编Jil*_*ill的帖子

Junit Mockito在Spring集成框架中为ResponseEntity <?>测试案例

我想嘲笑外部电话.

 ResponseEntity<?> httpResponse = requestGateway.pushNotification(xtifyRequest);
Run Code Online (Sandbox Code Playgroud)

requestGateway是一个界面.

public interface RequestGateway
{
ResponseEntity<?> pushNotification(XtifyRequest xtifyRequest);
}
Run Code Online (Sandbox Code Playgroud)

以下是我正在尝试的测试方法.

 @Test
public void test()
{


    ResponseEntity<?> r=new ResponseEntity<>(HttpStatus.ACCEPTED);

    when(requestGateway.pushNotification(any(XtifyRequest.class))).thenReturn(r);
}
Run Code Online (Sandbox Code Playgroud)

上面的when语句中存在编译错误,称其为无效类型.甚至thurgg类型为ResponseEntity.

有谁可以帮我解决这个问题?

junit spring-integration mockito

6
推荐指数
1
解决办法
2万
查看次数

Spring Security 与 Spring Boot 3 - 从安全上下文持有者获取 JWT 令牌

迁移到 Spring Boot 3 后,

extends ResourceServerConfigurerAdapter is deprecrated.
Run Code Online (Sandbox Code Playgroud)

因此,无法使用覆盖的方法

   @Override
public void configure(ResourceServerSecurityConfigurer config) {
    config.tokenServices(tokenServices());
}
Run Code Online (Sandbox Code Playgroud)

我可以将其替换为

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http.csrf().disable();
    http.authorizeHttpRequests(auth->auth.
            requestMatchers(whitelistedEndPoints()).permitAll()
            .anyRequest()
            .anonymous())
            .httpBasic().disable();
    return http.build();
}
Run Code Online (Sandbox Code Playgroud)

我有一个现有代码可以从 OAuth 获取 jwt 令牌,如下所示

 public String getJwtTokenFromAuth() {
    OAuth2Authentication auth =(OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();
  
    OAuth2AuthenticationDetails oauth2AuthenticationDetails = (OAuth2AuthenticationDetails) auth.getDetails();
    return oauth2AuthenticationDetails.getTokenValue();
}
Run Code Online (Sandbox Code Playgroud)

然而,

OAuth2Authentication 和 OAuth2AuthenticationDetails 不可用

我如何用 Spring Boot 3 的新 Spring Security 模块替换此代码/功能。下面是 pom 依赖项,请建议我是否需要添加/删除任何依赖项?

  <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-oauth2-resource-server</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

spring-security spring-boot

5
推荐指数
1
解决办法
5115
查看次数

实体管理器的测试用例

Mockito.when为下面的代码行获取空指针异常。

when(entityManager.createQuery(any(String.class)).setParameter(any(String.class), any(String.class)).getSingleResult()).thenReturn("2");
Run Code Online (Sandbox Code Playgroud)

试图模拟声明为的实体管理器

@Mock
private EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

任何帮助解决这个问题?

完成测试类

@RunWith(MockitoJUnitRunner.class)
public class ASDAOImplTest {

    @InjectMocks
    ASDAOImpl asdaoImpl=new ASDAOImpl();
    @Mock
    private EntityManager entityManager;

    @Before
    public void setUp()
    {
        ReflectionTestUtils.setField(asdaoImpl,"capLimit", 1);
    }

    @Test
    @Ignore
    public void validateCappingTest()
    {
        when(entityManager.createQuery(any(String.class)).setParameter(any(String.class), any(String.class)).getSingleResult()).thenReturn("2");
        asdaoImpl.validateCapping("2");
    }
}
Run Code Online (Sandbox Code Playgroud)

junit entitymanager junit4

0
推荐指数
1
解决办法
4789
查看次数