当前位置: 首页 > 知识库问答 >
问题:

spring HATEOAS资源汇编程序未在单元测试中实例化

罗毅
2023-03-14

我试图编写一个REST控制器的单元测试,它通过资源汇编类生成HATEOAS链接。生产过程中一切正常,但使用单元测试资源时,汇编程序类不会被注入到控制器中。

我的资源汇编程序类是:

@Component
public class ModelResourceAssembler extends ResourceAssemblerSupport<Model, ModelResource> {
    public ModelResourceAssembler() {
    super(ModelRestController.class, ModelResource.class);

    }

    @Bean 
    public ModelResourceAssembler modelResourceAssembler(){
      return new ModelResourceAssembler();
    }
   @Override
   public ModelResource toResource(Model model) {
   ...
  }
}

控制器是:

@Controller
@RequestMapping("/demo")
@ComponentScan(basePackages = {"com.foo.demo"} )
public class ModelRestController {
    @Autowired
    private ModelPersistenceHandler modelPersistenceHandler;

    @Autowired
    private ModelResourceAssembler modelResourceAssembler;
...
}

和单元测试:

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes=    {ModelResourceAssembler.class, ModelRestController.class})
public class ModelRestControllerTest {
    private MockMvc mockMvc;

    @InjectMocks
    private ModelRestController modelRestController;

    @Mock
    private ModelPersistenceHandler modelPersistenceHandler;


    @Before
    public void setup()  {
       MockitoAnnotations.initMocks(this);
       mockMvc = MockMvcBuilders.standaloneSetup(modelRestController).build();
   }
   ...
}

无论我做什么,ModelResourceAssembler实例始终为空。由于应用程序是spring boot的,它没有WebCoonfig类,并且autowired的WebApplicationContext始终为空,所以我不能(而且真的不想这样做,因为我正在运行单元测试)通过webAppContextSetup实例化MockMvc

共有1个答案

魏安宁
2023-03-14

在示例中,您使用了@injectmocks,但没有为ModelResourceAssembler声明模拟。你不会突然得到一个实例。

您可以使用mockitojunitrunner.class。它不知道spring豆。对于测试spring应用程序,您更希望使用SpringJUnit4ClassRunner.class

 类似资料:
  • 本文向大家介绍Android编程单元测试实例详解(附源码),包括了Android编程单元测试实例详解(附源码)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程单元测试。分享给大家供大家参考,具体如下: 完整实例代码代码点击此处本站下载。 本文是在上一篇文章《java编程之单元测试(Junit)实例分析》的基础上继续讲解android的单元测试,android源码中引入了j

  • 本文向大家介绍java编程之单元测试(Junit)实例分析(附实例源码),包括了java编程之单元测试(Junit)实例分析(附实例源码)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java编程之单元测试。分享给大家供大家参考,具体如下: 完整实例代码代码点击此处本站下载。 在有些时候,我们需要对我们自己编写的代码进行单元测试(好处是,减少后期维护的精力和费用),这是一些最基本的模块测

  • 由于我的两个JPA实体(任务和作业)的双向关系中的嵌套循环,我出现了Jackson错误。我开始研究并使用@JsonManagedResources和@JsonBackResources注释部分解决了这个问题,但此方法仅在我在实体中使用注释时才有效,最终JSON序列化跳过我的JobResource/JobResourceAssembler和TaskResource/TaskResourceAssem

  • 本文向大家介绍Android编程之单元测试实例分析,包括了Android编程之单元测试实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android编程之单元测试用法。分享给大家供大家参考,具体如下: 在实际开发中,开发android软件的过程需要不断地进行测试。使用Junint测试框架,是正规Android开发的必用技术,在Junint中可以得到组件,可以模拟发送事件和检测程序处

  • 我在构造函数 rabbitmq配置。Springxml位于src/main/resources中,在src/main/java中加载xml的类和在src/test/java中加载xml的测试类。我尝试在src/test/resources中复制XML文件,但没有效果。 有没有办法解决这个问题?

  • 问题内容: 您好,我正在用Jasmine编写我的第一个角度测试,但是我一直收到错误消息 ------测试开始:文件:C:\ Users \ Regan \ Documents \ Visual Studio 2013 \ WebSites \ Regan \ testApp \ TestProject \ ng-tests \ MainCtrlSpec.js ------使用内联测试’MainCt