我正在尝试为我的春季启动应用程序编写测试。对于独立控制器测试,我使用了@WebMvcTest但遇到了一些问题。这是代码的基本结构。
UserController具有自动装配的UserService类。
LibraryController具有自动装配的LibraryService类。
以下是UserControllerTest ::
的代码@RunWith(SpringRunner.class)
@WebMvcTest(UserController.class)
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private UserService userServiceMock;
@Test
public void someTest(){}
}
在UserControllerTest中运行代码时出错:
引起: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名称为' libraryController的bean时出错':不满意 通过字段“库服务”表达的依赖性&#39 ;;嵌套 例外是org.springframework.beans.factory
根据我的理解,由于我们在@WebMvcTest注释中指定了UserController,我们只需要模拟该控制器所需的依赖关系。但是它要求libraryService与usercontroller没有链接。
是的,如果我们在测试中包含库服务作为MockBean,那么它工作正常。但如果是这种情况,我们必须在程序扩展时模拟每个自动装配的bean。
任何解释都表示赞赏。提前谢谢。
答案 0 :(得分:2)
可能您已经在主类上定义了以下注释之一:@ ComponentSacn,@ EnableJpaRepositores和@EntityScan。
通过将@EnableJpaRepositores放置在主类上,表明您必须始终启用JPA仓库,无论您要测试的是哪个特定功能。这同样适用于@ComponentScan和@EntityScan。