我有两个控制器,一个用于用户,一个用于角色。我已经为用户控制器编写了测试,但是当我尝试运行测试时,它会给我以下错误:
"由以下原因引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的'uk.co.circuare.cube.service.user.repository.RoleRepository'类型的合格bean:需要至少1个符合自动连接候选条件的bean。依赖项注释:{@org.springframework.beans.factory.annotation.Autowired(必需=true)}"
我正在使用模拟
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper mapper;
@MockBean
private UserRepository repository; [![enter image description here][1]][1]
我在我的用户控制器中使用了两个存储库:
@Autowired私人用户存储库;
@自动连线专用角色存储角色存储;
对此的解决方案非常简单——您需要为测试类中的应用程序上下文提供控制器类中使用的每个bean。
您提到了一个错误,提示NoSuchBeanDefitionException:没有可用的uk.co.circuare.cube.service.user.repository.RoleRepository类型的合格bean:需要至少1个符合autowire候选条件的bean。这意味着在您的测试应用程序上下文中没有
RoleRepository
类型的bean。
您正在使用
@MockBean
批注。它将替换应用程序上下文中任何相同类型的现有 Bean。如果未定义相同类型的 Bean,则将添加一个新 Bean。我建议您检查您在本文中使用的模拟注释的详细信息:Mockito.mock() vs @Mock vs @MockBean
要解决您的问题,您的测试类应该如下所示:
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper mapper;
@MockBean
private UserRepository repository;
@MockBean
private RoleRepository roleRepository;
...
}
@ExtendWith(MockitoExtension.class)
public class UserControllerTest {
@InjectMocks
private UserController userController;
@Mock
private ObjectMapper mapper;
@Mock
private UserRepository repository;
@Mock
private RoleRepository roleRepository;
...
}
您还必须在测试类中模拟角色存储库
。
我有一个应用程序,使用经典的Spring配置与xml,它可以使用Spring启动仅用于单元测试? 像这样:
本文向大家介绍AngularJS 单元测试控制器,包括了AngularJS 单元测试控制器的使用技巧和注意事项,需要的朋友参考一下 示例 控制器代码: 考试: 跑!
我有以下结构的控制器: 当我模拟抛出异常UserNotFoundException时,我只得到NestedServletException。即使我尝试添加expected=NestedServletException.class。corbetura报告指出测试中没有覆盖代码块。您有什么建议来帮助测试catch块内的代码吗。 请求的测试代码: 和堆栈跟踪 Java.lang.exception:意外
在发送请求之前(当单元测试时),我是否可以得到csrf令牌?
本文向大家介绍Spring Boot Rest控制器单元测试过程解析,包括了Spring Boot Rest控制器单元测试过程解析的使用技巧和注意事项,需要的朋友参考一下 Spring Boot提供了一种为Rest Controller文件编写单元测试的简便方法。在SpringJUnit4ClassRunner和MockMvc的帮助下,可以创建一个Web应用程序上下文来为Rest Controll
我不完全确定这是否是适合这种问题的地方,但我会试着至少花几分钟来摆脱他们称之为Spring靴测试的地狱。 我正在寻找任何关于测试的最新信息资源(书籍/网站等)。 我是java/kotlin开发人员,现在已经进入第四个年头了,我觉得自己对java/kotlin和Spring Boot软件的理解还不错。但有一个类别让我感到震惊。测试、单元和Rest。 无论出于什么原因,每次我尝试进行新的测试或更新旧的