Весенний ботинок отдыхает API Mockito + MockMVC Упорство - PullRequest
0 голосов
/ 29 октября 2019

Я хотел бы создать Test для моего контроллера покоя:

@Controller
@RequestMapping("/v2/api/show/project")
public class ApiAccessController {
    private final ApiAccessService apiAccessService;

    @Autowired
    ApiAccessController(ApiAccessService apiAccessService){
        this.apiAccessService = apiAccessService;
    }
    @PutMapping(value = "/{id}/apikey")
    public ResponseEntity<ApiKeyResponse> generateApiKey(@PathVariable("id")Long id, Principal principal) {
        return apiAccessService.generateApiKey(id, principal.getName());
    }
}

Мой тест выглядит следующим образом:

@RunWith(SpringJUnit4ClassRunner.class)
public class ApiAccessControllerTest {
    private MockMvc mockMvc;
    Principal principal = new Principal() {
        @Override
        public String getName() {
            return "TEST_PRINCIPAL";
        }
    };

    @InjectMocks
    ApiAccessController apiAccessController;
    @Mock
    ProjectRepository projectRepository;

    @Before
    public void setUp(){
        mockMvc = MockMvcBuilders.standaloneSetup(apiAccessController).build();
    }
    @Test
    public void testGenerateApiKey() throws Exception {
        Project project = new Project();
        project.setId((long) 1);
        project.setName("test");
        project.setDescription("testdesc");
        project.setCiid("ciid");
        when(projectRepository.save(any(Project.class))).thenReturn(project);
        mockMvc.perform(MockMvcRequestBuilders.put("/v2/api/show/project/" + project.getId() +"/apikey").principal(principal))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }
}

Как создать проект, а затем запустить generateApiKeyоднако в этом проекте я получаю NullpointerException, который выглядит как смоделированный контроллер, который не может найти созданную сущность

Может ли кто-нибудь указать мне правильное направление, когда я только начинаю тестирование?

...