【问题标题】:Testing api rest with spring boot error service not inyected使用未注入的spring boot错误服务测试api rest
【发布时间】:2018-07-08 19:19:31
【问题描述】:

我在我的应用程序中运行测试。当我的控制器调用它时,该服务为空。 我的控制器。测试中的 UsuarioService 为空

@RestController
@RequestMapping("/api")
public class OrdersController {

    public static final Logger logger = LoggerFactory.getLogger(OrdersController.class);

    @Autowired
    UsuarioService usuarioService;

    // Listado Usuarios
    @ApiOperation(value = "listAllUsers", nickname = "listAllUsers", response = ResponseEntity.class)
    @ApiResponse(code = 200, message = "Petición Correcta", response = ResponseEntity.class)
    @RequestMapping(value = "/user/", method = RequestMethod.GET)
    @PreAuthorize("hasAuthority('ADMIN_USER') or hasAuthority('STANDARD_USER')")
    public ResponseEntity<List<Usuario>> listAllUsers() {
        List<Usuario> listaUsuarios = usuarioService.findAllUsuarios();
        if (listaUsuarios.isEmpty()) {
            return new ResponseEntity(HttpStatus.NO_CONTENT);
        }
        return new ResponseEntity<List<Usuario>>(listaUsuarios, HttpStatus.OK);
    }

我的服务:

@Service
public class UsuarioServiceImpl implements UsuarioService{

    @Autowired
    private UsuarioRepository usuarioRepository;

    @Override
    public Usuario findById(Long id) {
        return usuarioRepository.findOne(id);
    }

我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {JpaConfiguration.class}, initializers= YamlFileApplicationContextInitializer.class)
@WebAppConfiguration
@SpringBootTest(
          webEnvironment = WebEnvironment.RANDOM_PORT,
          classes = DemoApplication.class)

@ActiveProfiles("local,default")
public class DemoApplicationTests {


    private MockMvc mockMvc;

    @Before
    public void setup() {
        this.mockMvc = MockMvcBuilders.standaloneSetup(new OrdersController()).build();
    }

    @Test
    public void givenNoToken_whenGetSecureRequest_thenUnauthorized() throws Exception {
        mockMvc.perform(get("/api/user/")
        .accept(MediaType.APPLICATION_JSON))
        .andExpect(status().isUnauthorized())
        .andExpect(jsonPath("$.error", is("unauthorized")));
    }

当我运行测试 usuarioService.findAllUsuarios(); 时,usuarioService 为空。你能帮帮我吗?

我认为我的测试中缺少某些东西

【问题讨论】:

    标签: spring rest api spring-boot service


    【解决方案1】:

    请替换以下内容 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {JpaConfiguration.class}, initializers= YamlFileApplicationContextInitializer.class)

    @RunWith(SpringRunner.class) @SpringBootTest

    我怀疑是因为您指定了 @ContextConfiguration 它没有使用主类的 @ComponentScan(因此找不到服务)。

    【讨论】:

    • 我试过但没有解决我的问题。我的服务也是空的。我的主班是:@SpringBootApplication(scanBasePackages={"com.example.demo"}) @EnableResourceServer public class DemoApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApplication.class); } }
    猜你喜欢
    • 2019-07-18
    • 2017-10-30
    • 2023-03-25
    • 2022-01-19
    • 2021-05-04
    • 2017-04-23
    • 2018-09-28
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多