Aserciones
Después de que una prueba realiza una acción, comprueba lo que vería el usuario: el texto de un botón, si se puede editar un campo o qué elemento de una lista aparece seleccionado. verifyThat(component) expresa estas expectativas con las mismas palabras, como isReadOnly() o hasText("Save"). Cada comprobación lee el estado del componente —el mismo estado que muestra el navegador— y, si falla, indica el componente y ambos valores.
Comprobar un componente
El siguiente editor muestra un nombre que no se puede cambiar hasta que el usuario hace clic en Edit. El clic hace que el campo sea editable, mueve el foco al campo y cambia el botón a Save:
import com.webforj.component.Composite;
import com.webforj.component.button.Button;
import com.webforj.component.field.TextField;
import com.webforj.component.html.elements.Div;
public class ProfileEditor extends Composite<Div> {
public ProfileEditor() {
TextField name = new TextField("Name", "Ada");
name.setReadOnly(true);
Button edit = new Button("Edit");
edit.onClick(
e -> {
name.setReadOnly(false).focus();
edit.setText("Save");
});
getBoundComponent().add(name, edit);
}
}
La prueba comprueba el campo antes y después del clic:
@Test
void shouldMakeTheNameEditableWhenTheUserClicksEdit(WebforjTestbed context) {
context.add(new ProfileEditor());
var name = ComponentLocator.of(TextField.class).byLabel("Name").locate();
var edit = ComponentLocator.of(Button.class).byText("Edit").locate();
verifyThat(name).hasValue("Ada").isReadOnly();
UserInteraction.click(edit);
verifyThat(name).isEditable().isFocused();
verifyThat(edit).hasText("Save");
}
verifyThat proviene de com.webforj.testbed.assertion.WebforjAssertions y se importa de forma estática. Cada comprobación devuelve la aserción, por lo que las comprobaciones de un mismo componente se encadenan en una sola instrucción. Se ejecutan en orden y la primera que falla termina la prueba.
Cada estado tiene una comprobación para cada una de sus opciones, como isReadOnly() e isEditable(), o isVisible() e isHidden(), de modo que la prueba expresa directamente el estado esperado.