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

使用属性值的RequestMapping进行Spring Boot REST控制器测试

仲孙奇
2023-03-14

关于Spring Boot REST Controller的单元测试,我遇到了@RequestMapping和应用程序属性的问题。

@RestController
@RequestMapping( "${base.url}" )
public class RESTController {
    @RequestMapping( value = "/path/to/{param}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE )
    public String getStuff( @PathVariable String param ) {
        // implementation of stuff
    }
}

我正在处理应用程序的几个概要文件,因此我有几个application-{profile}.properties文件。在每个文件中都设置并显示base.url属性值。我还有一个用于测试的不同的Spring上下文配置,它与生产性版本仅有一个Bean不同。

@ActiveProfiles( "dev" )
@RunWith( SpringJUnit4ClassRunner.class )
@SpringApplicationConfiguration( classes = SpringContextConfigTest.class )
public class RESTControllerTest {

private static final String SINGLE_INDIVIDUAL_URL = "/query/api/1/individuals/";

@InjectMocks
private RESTController restController;

@Mock  
private Server mockedServer; // needed for the REST Controller to forward

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

@Test
public void testGetStuff() throws Exception {
  // test the REST Method "getStuff()"
}
  • @integrationteston Test,
  • @webappconfiguration,
  • 使用WebApplicationContext构建MockMVC
  • 在测试中自动调用RESTController
  • 在SpringContextConfigTest类中手动定义REST控制器Bean

和其他各种组合,但似乎什么都不起作用。那么我必须如何继续下去,才能让它发挥作用?我认为这是两个不同配置类的上下文配置问题,但我不知道如何解决它或如何“正确地”处理它。

共有1个答案

党博超
2023-03-14

您将需要向teh独立设置添加占位符值-

mockMvc=MockMvcBuilders.standaloneSetup(youController).addPlaceholderValue(name, value);
 类似资料:
  • 问题内容: 对于我一生,我无法让$ httpBackend在执行$ http get请求的控制器上工作。我已经尝试了几个小时=) 我将其简化为下面可以最简单的形式。如果我通过测试 在控制器中注释掉$ http.get()请求 在测试中注释掉“ httpMock.flush()” 并更改“猪”和“狗”以匹配 也就是说,这是一个有效的工作测试和应用程序。 如果放回去,则会在底部显示错误。 app /

  • 我有一段代码- 但是,ConditionalOn 批注无法按预期方式工作。我不希望控制器执行,如果不是的。注意 - 位于中 我错过了什么吗?可能是类级别的注释?

  • 我有一个rest控制器,它有简单的CRUD操作。我正在尝试编写集成测试。 下面是我的RestController: 我已经为RestController中的所有endpoint编写了集成测试 集成测试类:- 我的问题: 1.)当我把断点放在Rest控制器中时,它并没有停在那里,实际上它没有被调用。 2.)当我运行GET测试时,它会从响应返回登录html页面。getBody() 3.)当我运行POS

  • 我现在开始使用JUnit5和Spring Boot的测试。我有一个包含控制器、服务和存储库的Rest API,以及一些使用从我的获取属性的utils类。我没有使用Spring中的“profiles”,只是使用默认配置。 我的应用程序主: 我的项目的体系结构是: 我在主测试类中尝试了“@TestPropertySource”和/或“@ActiveProfiles(”Test“)”,但没有成功。还尝试

  • 问题内容: 编辑:本文末尾的“快速与肮脏”解决方案 我使用的是AngularUI-Bootstrap中的模式窗口,其方式与网站上说明的相同,只是我分割了文件。因此,我有: CallingController.js: modalController.js: 当我使用Karma测试此代码(在karma配置文件中加载了 ui-bootstrap-tpls.min.js 文件)时,出现以下错误: 错误:[

  • 我需要控制我回来的东西。我希望/注释方法,以便获得适当的头。