2017-08-12 133 views
1

我正在编写一个测试,其中我想测试其余控制器。 我嘲笑这是在控制,但春天也希望这是里面的服务库中的服务...由于NoSuchBeanDefinitionException而无法测试弹簧休息控制器

@RunWith(SpringRunner.class) 
@WebMvcTest(AccountRestController.class) 
public class AccountRestControllerTest { 

    @Autowired 
    private MockMvc mockMvc; 

    @MockBean 
    private PremiumAccountService service; 

    AccountRequestResource resource = new AccountRequestResource(25d); 
    PremiumAccount premiumAccount = new PremiumAccount("abc", "cba", LocalDateTime.now(), 25d); 

    @Test 
    public void testGetAccountWithAvailableGB() throws Exception { 
     given(service.getAccountByGB(25d)).willReturn(Optional.of(premiumAccount)); 
     mockMvc.perform(post("/api/account")) 
       .andExpect(status().isOk()) 
       .andExpect(jsonPath("$.login", is("abc"))); 


    } 

} 

堆栈:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'premiumaccountservice.repository.PremiumAccountRepository' available: expected at least 1 bean which qualifies as autowire candidate. 

AccountRestController:

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

    private final PremiumAccountService service; 

    @Autowired 
    public AccountRestController(PremiumAccountService service) { 
     this.service= service; 
    } 

} 
+0

看起来像一个公开的问题。 [github.com/spring-projects/spring-boot/issues/6663] –

+1

您可以发布完整的stacktrace和'AccountRestController'的代码吗?您是否可能将'PremiumAccountRepository'注入到您的'AccountRestController'中? 您使用哪个春季版本? – fap

+0

@fap不,在'AccountRestController'中'PremiumAccountService'只被注入。我正在使用弹簧引导1.5.6.RELEASE –

回答

0

它看起来像忘了在rest控制器中的服务实例变量上添加@Autowired注释。

相关问题