下面的测试用例给了我连接被拒绝的异常,当我评论方法体时,它是成功的。所以我相信端口没有问题,但我确定无法确定调用的问题。即使我和其他客户一起检查,也可以自己成功地将书籍作为json返回。
<table class="table">
<tr>
<td ng-repeat="(k, obj) in items | orderBy:'key'">{{obj.key}}</td>
</tr>
</table>
控制器如下所示,
@Test
public void testMe() {
get("/book").then().assertThat().contentType(ContentType.JSON);
}
异常追踪,
@RestController
@RequestMapping("/book")
public class BookController {
//Other crud api's are there
@RequestMapping(method = RequestMethod.GET)
public Map<String, Object> getAllBooks(){
List<Book> books = bookRepository.findAll();
Map<String, Object> response = new LinkedHashMap<String, Object>();
response.put("totalBooks", books.size());
response.put("books", books);
return response;
}
}
答案 0 :(得分:39)
通常我的应用程序在端口8080上运行,但在测试中它似乎在不同的端口上运行(即使我没有改变端口的任何内容)。
对我来说,以下问题解决了这个问题:
将此添加到SpringBootTest:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
获取指定的端口(没有随机端口设置不起作用):
@LocalServerPort
private int port;
使用新端口设置预先确定可靠的测试:
given().port(port).when().get...
OR
@Before
public void setUp() throws Exception {
RestAssured.port = port;
}
答案 1 :(得分:3)
REST Assured执行真正的http请求,看起来服务器没有运行(或者它运行在与8080不同的端口上,这是REST Assured正在使用的默认端口)。如果您不想发出真实的http请求,可以查看Spring MockMvc module,这可以说更容易设置。
答案 2 :(得分:0)
我遇到了同样的问题,并使用OKHttp
代替HttpClient
。这为我解决了这个问题。