java build返回空值,使用ResponseEntity <Void>返回空的HTTP响应不起作用

我们正在使用Spring(4.1.1。)实现REST API。对于某些HTTP请求,我们希望返回一个没有主体的头作为响应。但是,使用ResponseEntity似乎无效。通过MockMvc测试调用时,返回406(不可接受)。使用ResponseEntity不带参数的值(new ResponseEntity( HttpStatus.NOT_FOUND ))工作正常。

方法:

@RequestMapping( method = RequestMethod.HEAD, value = Constants.KEY )

public ResponseEntity taxonomyPackageExists( @PathVariable final String key ) {

LOG.debug( "taxonomyPackageExists queried with key: {0}", key ); //$NON-NLS-1$

final TaxonomyKey taxonomyKey = TaxonomyKey.fromString( key );

LOG.debug( "Taxonomy key created: {0}", taxonomyKey ); //$NON-NLS-1$

if ( this.xbrlInstanceValidator.taxonomyPackageExists( taxonomyKey ) ) {

LOG.debug( "Taxonomy package with key: {0} exists.", taxonomyKey ); //$NON-NLS-1$

return new ResponseEntity( HttpStatus.OK );

} else {

LOG.debug( "Taxonomy package with key: {0} does NOT exist.", taxonomyKey ); //$NON-NLS-1$

return new ResponseEntity( HttpStatus.NOT_FOUND );

}

}

测试用例(TestNG):

public class TaxonomyQueryControllerTest {

private XbrlInstanceValidator xbrlInstanceValidatorMock;

private TaxonomyQueryController underTest;

private MockMvc mockMvc;

@BeforeMethod

public void setUp() {

this.xbrlInstanceValidatorMock = createMock( XbrlInstanceValidator.class );

this.underTest = new TaxonomyQueryController( this.xbrlInstanceValidatorMock );

this.mockMvc = MockMvcBuilders.standaloneSetup( this.underTest ).build();

}

@Test

public void taxonomyPackageDoesNotExist() throws Exception {

// record

expect( this.xbrlInstanceValidatorMock.taxonomyPackageExists( anyObject( TaxonomyKey.class ) ) ).andStubReturn(

false );

// replay

replay( this.xbrlInstanceValidatorMock );

// do the test

final String taxonomyKey = RestDataFixture.taxonomyKeyString;

this.mockMvc.perform( head( "/taxonomypackages/{key}", taxonomyKey ).accept( //$NON-NLS-1$

MediaType.APPLICATION_XML ) ).andExpect( status().isNotFound() );

}

}

此堆栈跟踪失败:

FAILED: taxonomyPackageDoesNotExist

java.lang.AssertionError: Status expected:<404> but was:<406>

at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:60)

at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:89)

at org.springframework.test.web.servlet.result.StatusResultMatchers$10.match(StatusResultMatchers.java:652)

at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:153)

at de.zeb.control.application.xbrlstandalonevalidator.restservice.TaxonomyQueryControllerTest.taxonomyPackageDoesNotExist(TaxonomyQueryControllerTest.java:54)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)

at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)

at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)

at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)

at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)

at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)

at org.testng.TestRunner.privateRun(TestRunner.java:767)

at org.testng.TestRunner.run(TestRunner.java:617)

at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)

at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)

at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)

at org.testng.SuiteRunner.run(SuiteRunner.java:240)

at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)

at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)

at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)

at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)

at org.testng.TestNG.run(TestNG.java:1057)

at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)

at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)

at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值