当我向服务器发出 AJAX 请求以进行 CRUD 操作时,我有一个返回 JSON 的 Web 应用程序。这样做的原因是因为我使用 jQuery 来处理数据而不刷新页面(MVC),所以如果我在系统中创建一个新条目,服务器将返回一个响应,其中包含创建的 JSON 格式的条目。jQuery 管理接收到的数据并将条目呈现在列表中(使用先前创建的条目)。
现在我正在使用 HTML 单元对其进行测试,但如果我尝试
WebResponse response = page.getWebResponse()
我得到 200 状态和消息“OK”。但我期待我创建的条目的 JSON 数据。
如果我尝试
page.asText()
我得到了当前页面的 HTML(条目已经在列表中,但不是我想要的数据)。
这是一个与此类似的问题,没有响应:Json ajax call returned response 200 ok
PD:jQuery 表单有两个字段,一个是名称的文本输入,另一个是汽车设置的选择。我将要选择的设置列表传递给此函数。该名称是使用时间戳和静态 int 种子自动生成的。这是我正在使用的代码:
public void create(List<Settings> settings) throws FailingHttpStatusCodeException, MalformedURLException, IOException
{
page = webClient.getPage("localhost:8080/cars/list");
int elementsCount = getEntitiesCount();
creationSeed = elementsCount+1;
HtmlAnchor anchor = (HtmlAnchor) page.getFirstByXPath("//a[@class='action-createCar']");
page = (HtmlPage) anchor.click();
HtmlForm form = page.getFirstByXPath("//form[@class='CarsForm']");
form = page.getForms().get(0);
HtmlTextInput nameField = form.getInputByName("CarsForm-name");
nameField.setText("Test " + creationSeed + " - " + new Date().getTime());
HtmlSelect columnSelectList = (HtmlSelect) form.getSelectByName("CarsForm-settings");
if (settings != null && settings.size() > 0)
for (Settings setting : settings)
{
HtmlOption htmlOption = columnSelectList.getOptionByValue(setting.name());
htmlOption.setSelected(true);
}
//looking for the button to submit the form
HtmlDivision buttonSet = page.getFirstByXPath("//div[@class='ui-dialog-buttonset']");
HtmlButton okButton = (HtmlButton) buttonSet.getFirstElementChild();
page = okButton.click();
assertEquals(elementsCount + 1, getEntitiesCount());
//Here is where I want to get the server response to check the data which is returned by the server
//And neither page.getWebResponse() or page.asText() contains it
}
}