【问题标题】:Spring boot Junit testing for putMapping returns always null用于 putMapping 的 Spring Boot Junit 测试始终返回 null
【发布时间】:2019-04-22 15:56:23
【问题描述】:

我有一个PutMapping,它将首先检查Reward-Entity,然后如果存在,它将进一步继续更新Entity

@PutMapping
public ResponseEntity<RewardResponse> updateValidReward(Principal updatedPrincipal,
                                                                @RequestBody RewardUpdateRequest rewardUpdateRequest) {

            Optional<RewardEntity> rewardEntityInDatabase =
                RewardService.getRewardById(rewardUpdateRequest.getRewardId());

        if (!rewardEntityInDatabase.isPresent()) {
                return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }

        RewardEntity updatedReward = updateReward(updatedPrincipal,
                rewardUpdateRequest, rewardEntityInDatabase.get());

        RewardResponse updatedRewardResponse = RewardResponse.builder()
                .reward(RewardMapper.fromRewardEntity(updatedReward))
                .build();

        return ResponseEntity.ok(updatedRewardResponse);
}

当我尝试为此编写Test-case 时,这对我来说是一个挑战,格式如下

ResponseEntity<RewardResponse> rewardResponse =
                controller.updateValidReward(principal, rewardUpdateRequest);


        RewardApi rewardApiToValidate = rewardResponse.getBody().getReward();
        assertThat(rewardApiExpected.getRewardTitle()).isEqualTo(rewardApiToValidate.getRewardTitle());
        assertThat(rewardApiExpected.getRewardText()).isEqualTo(rewardApiToValidate.getRewardText());

当测试代码中的以下行被执行时,我总是得到NullPointerException

rewardResponse.getBody().getReward();

因为实际代码中的以下条件总是变为true,并且它总是返回HttpStatus.NOT_FOUND

if (!rewardEntityInDatabase.isPresent()) {
                    return new ResponseEntity<>(HttpStatus.NOT_FOUND);
            }

如何解决这个问题?

【问题讨论】:

    标签: spring-boot junit spring-boot-test


    【解决方案1】:

    我通过准确调用原始代码中的Controller 来解决这个问题。首先,我通过我的测试代码调用Optional --&gt; getRewardIdFromDatabase() 代码内容我执行了控制器的update 方法

    【讨论】:

      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2018-02-24
      • 1970-01-01
      • 2019-05-27
      相关资源
      最近更新 更多