Я пытаюсь проверить метод вызывается при обновлении текстового поля. Однако похоже, что он не может заставить его работать, поскольку он, похоже, не запускает событие onUpdate.
Кажется, что произошло событие onError из-за попытки преобразовать нулевое значение.
org.apache.wicket.util.convert.ConversionException: Method [public long uk.co.cdl.strata.web.client.accounts.payment.PostUnderwriterTransactionContext.getNettAmount()]. Can't convert null value to a primitive class: long for setting it on uk.co.cdl.strata.web.client.accounts.payment.PostUnderwriterTransactionContext@67770b37
Похоже, что из-за того, что у него нет значения, возникает ошибка. Но я не уверен, как установить его значение перед запуском теста.
Мой тестовый пример:
@Test
public void shouldUseDefaultCaseForUpdatingAmount() {
// Given
setContext(1);
setNettRated();
testSubject = createAndStartPanel();
// When
tester.executeAjaxEvent(NETT_AMOUNT_ID, "change");
// Then
verify(mockNettViewController, times(1)).updateAmount(any());
}
Вот как я настраиваю текстовое поле. Кажется, я никогда не запускаю событие onUpdate.
protected TextField<Float> createNettAmountTextField(String id, String key) {
CurrencyTextField currencyTextField = CurrencyTextField.createPenceCurrencyQuestion(id, new PropertyModel<Long>(getModel(), key));
currencyTextField.setOutputMarkupId(true);
currencyTextField.setOutputMarkupPlaceholderTag(true);
currencyTextField.setVisible(isTransactionsTypeChoiceAvailable());
if (amountInputValidator != null) {
currencyTextField.add(amountInputValidator);
}
currencyTextField.add(new StopAutomaticValidationBehaviour());
currencyTextField.add(new AjaxFormComponentUpdatingBehavior("change") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
updateValue(id);
redrawComponents(target);
send(getPage(), DEPTH, new AmountInputEvent(target));
}
@Override
protected void onError(AjaxRequestTarget target, RuntimeException e) {
target.add(currencyTextField);
target.focusComponent(currencyTextField);
}
});
return currencyTextField;
}
Результат теста:
Wanted but not invoked:
mockNettViewController.updateAmount(<any>);
-> at uk.co.cdl.strata.web.client.accounts.payment.PostUnderwriterTransactionPanelTest.shouldUseDefaultCaseForUpdatingAmount(PostUnderwriterTransactionPanelTest.java:430)