春季测试:BlogService中构造函数的参数0需要一个类型为BlogPostRepository的bean

时间:2019-09-27 22:23:22

标签: spring testing

我有一个BlogPostRepository,它是JpaRepository接口:

@Repository
@Primary
public interface BlogPostRepository extends JpaRepository<BlogPost, Long> {
    @Query("SELECT p FROM BlogPost p WHERE slug = ?1")
    List<BlogPost> findBySlug(String slug);
}

根据以下错误,当我运行以下测试时,Spring无法加载BlogPostRepository:

Parameter 0 of constructor in com.example.demo.Services.BlogService required a bean of type 'com.example.demo.Repositories.BlogPostRepository' that could not be found.

我的测试如下:

@RunWith(SpringRunner.class)
@WebMvcTest(BlogController.class)
@ContextConfiguration(classes = {DemoApplication.class,BlogController.class})
public class BlogControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void test() throws Exception
    {
        MvcResult result = this.mockMvc.perform(get("/blog"))
                //.andDo(print())
                .andExpect(status().isOk())
                .andReturn();
        assertTrue(result.getResponse().getContentAsString().contains("Hello world"));
    }
}

问题是我无法将BlogPostRepository定义为bean,因为它是一个接口:

@Bean
public ExceptionFactory exceptionFactory()
{
    return new BlogPostRepository(); //this does not work! -> cannot construct interface
}

这仅在集成测试期间发生。

0 个答案:

没有答案
相关问题