如何在 WicketTester 中的 CheckBoxMultipleChoice 上执行 AJAX 事件
How to execute an AJAX event on a CheckBoxMultipleChoice in WicketTester
我正在使用 Wicket 6.20.0 的 CheckBoxMultipleChoice
并通过添加 AjaxFormChoiceComponentUpdatingBehavior
.
来利用 AJAX 功能
这是按要求工作的。但是,使用 WicketTester
来测试 CheckBoxMultipleChoice
的功能似乎是不可能的。
当我使用 WicketTester
的 debugComponentTrees()
时,CheckBoxMultipleChoice
的唯一路径是它的直接路径,即我无法获得子 CheckBox
对象或类似对象来执行 AJAX 事件。
如何使用 WicketTester
执行 AJAX 事件,例如单击其中一个复选框?
CheckBoxMultipleChoice 是一个 "optimized" 表单组件,即它使用字符串连接来创建其 "children" - 复选框。如果它使用 CheckBox 组件,那么它会导致更大的组件树和更多的内存消耗。
要使用 WicketTester 对其进行测试,您只需使用所有选定的值设置请求参数:
tester.getRequest().addParameter(cbmc.getInputName(), "value1");
tester.getRequest().addParameter(cbmc.getInputName(), "value2");
// ...
tester.executeAjaxEvent(cbmc, "click");
// assert
我正在使用 Wicket 6.20.0 的 CheckBoxMultipleChoice
并通过添加 AjaxFormChoiceComponentUpdatingBehavior
.
这是按要求工作的。但是,使用 WicketTester
来测试 CheckBoxMultipleChoice
的功能似乎是不可能的。
当我使用 WicketTester
的 debugComponentTrees()
时,CheckBoxMultipleChoice
的唯一路径是它的直接路径,即我无法获得子 CheckBox
对象或类似对象来执行 AJAX 事件。
如何使用 WicketTester
执行 AJAX 事件,例如单击其中一个复选框?
CheckBoxMultipleChoice 是一个 "optimized" 表单组件,即它使用字符串连接来创建其 "children" - 复选框。如果它使用 CheckBox 组件,那么它会导致更大的组件树和更多的内存消耗。
要使用 WicketTester 对其进行测试,您只需使用所有选定的值设置请求参数:
tester.getRequest().addParameter(cbmc.getInputName(), "value1");
tester.getRequest().addParameter(cbmc.getInputName(), "value2");
// ...
tester.executeAjaxEvent(cbmc, "click");
// assert