使用放心的 Spring Boot 断言布尔响应
Assert boolean response with restassured SpringBoot
我想在 Spring Boot Junit 测试用例中评估来自我的 Rest Controller 的布尔响应。响应似乎相同,但 Rest Assured 将响应值放在括号中。
我的控制器:-
@PutMapping("/file/{id}")
ResponseEntity<Boolean> uploadFile(@RequestBody MultipartFile file,
@PathVariable String id) {
return new ResponseEntity<>(
fileService.uploadImage(file, id),
HttpStatus.CREATED);
}
我的测试用例:-
@Test
public void UploadAttachmentTest() throws Exception {
given().pathParam("id", "randomId").multiPart(dummyFile).expect()
.statusCode(HttpStatus.SC_CREATED).body(equalTo(true)).when()
.put("/file/{id}");
}
运行 junit 测试用例时出错:-
java.lang.AssertionError: 1 expectation failed.
Response body doesn't match expectation.
Expected: <true>
Actual: true
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80)
at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:74)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:249)
....
按照您想要的格式提取响应exactly.something如下代码片段所示。
@Test
public void UploadAttachmentTest() throws Exception {
Boolean response = given()
.pathParam("id", "randomId")
.multiPart(dummyFile)
.expect()
.statusCode(HttpStatus.SC_CREATED)
.extract().response().as(Boolean.class);
// Here u can check response with assertTrue() or assertFalase()
assertTrue(response);
}
使用is
代替equal
:
.statusCode(HttpStatus.SC_CREATED).body(is(true)).when()
我想在 Spring Boot Junit 测试用例中评估来自我的 Rest Controller 的布尔响应。响应似乎相同,但 Rest Assured 将响应值放在括号中。
我的控制器:-
@PutMapping("/file/{id}")
ResponseEntity<Boolean> uploadFile(@RequestBody MultipartFile file,
@PathVariable String id) {
return new ResponseEntity<>(
fileService.uploadImage(file, id),
HttpStatus.CREATED);
}
我的测试用例:-
@Test
public void UploadAttachmentTest() throws Exception {
given().pathParam("id", "randomId").multiPart(dummyFile).expect()
.statusCode(HttpStatus.SC_CREATED).body(equalTo(true)).when()
.put("/file/{id}");
}
运行 junit 测试用例时出错:-
java.lang.AssertionError: 1 expectation failed.
Response body doesn't match expectation.
Expected: <true>
Actual: true
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80)
at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:74)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:249)
....
按照您想要的格式提取响应exactly.something如下代码片段所示。
@Test
public void UploadAttachmentTest() throws Exception {
Boolean response = given()
.pathParam("id", "randomId")
.multiPart(dummyFile)
.expect()
.statusCode(HttpStatus.SC_CREATED)
.extract().response().as(Boolean.class);
// Here u can check response with assertTrue() or assertFalase()
assertTrue(response);
}
使用is
代替equal
:
.statusCode(HttpStatus.SC_CREATED).body(is(true)).when()