Vaadin 附加 class 到页面?
Vaadin attach class to Page?
如何模拟 'Page' 并将 class 的页面设置为我的模拟? (这可能吗?)
public class Example extends CssLayout(){
public void notification(){
Notification notif = new Notification("Title", "Message", Notification.Type.HUMANIZED_MESSAGE);
notif.setStyleName("Warning");
notif.setPosition(Position.TOP_CENTER);
notif.setDelayMsec(10000);
notif.show(Page.getCurrent());
}
}
我想做什么:
Example example = new Example();
Page p = mock(Page.class);
example.setPage(p)
感谢您的帮助!
Vaadin UI class 创建并拥有 Page 实例。您可以使用反射设置模拟,但要小心,因为您最终可能会在模拟中实现大量页面 class 功能,具体取决于您的应用程序通常使用页面或框架的程度。
如果您想为单元测试模拟 Vaadin,创建一个模拟和设置这些 classes 的实用程序 class 可能是个好主意:UI 、VaadinService、VaadinSession、VaadinRequest 和 Navigator。
这是模拟页面的 Mockito 单元测试 class:
@RunWith(MockitoJUnitRunner.class)
public class HelloUiTest {
private HelloUi ui;
@Mock
private Page page;
@Mock
private VaadinRequest req;
@Before
public void setup() throws Exception {
initUi();
mockPage();
}
private void initUi() {
ui = new HelloUi();
ui.init(req);
CurrentInstance.setInheritable(UI.class, ui);
}
private void mockPage() throws NoSuchFieldException, IllegalAccessException {
Field pageField = UI.class.getDeclaredField("page");
pageField.setAccessible(true);
pageField.set(ui, page);
}
@Test
public void testNotification() {
ui.getButton().click();
verify(page).getLocation();
}
}
这次测试的功能是这个点击监听器:
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent clickEvent) {
Notification.show("You are at: " + Page.getCurrent().getLocation());
}
});
如何模拟 'Page' 并将 class 的页面设置为我的模拟? (这可能吗?)
public class Example extends CssLayout(){
public void notification(){
Notification notif = new Notification("Title", "Message", Notification.Type.HUMANIZED_MESSAGE);
notif.setStyleName("Warning");
notif.setPosition(Position.TOP_CENTER);
notif.setDelayMsec(10000);
notif.show(Page.getCurrent());
}
}
我想做什么:
Example example = new Example();
Page p = mock(Page.class);
example.setPage(p)
感谢您的帮助!
Vaadin UI class 创建并拥有 Page 实例。您可以使用反射设置模拟,但要小心,因为您最终可能会在模拟中实现大量页面 class 功能,具体取决于您的应用程序通常使用页面或框架的程度。
如果您想为单元测试模拟 Vaadin,创建一个模拟和设置这些 classes 的实用程序 class 可能是个好主意:UI 、VaadinService、VaadinSession、VaadinRequest 和 Navigator。
这是模拟页面的 Mockito 单元测试 class:
@RunWith(MockitoJUnitRunner.class)
public class HelloUiTest {
private HelloUi ui;
@Mock
private Page page;
@Mock
private VaadinRequest req;
@Before
public void setup() throws Exception {
initUi();
mockPage();
}
private void initUi() {
ui = new HelloUi();
ui.init(req);
CurrentInstance.setInheritable(UI.class, ui);
}
private void mockPage() throws NoSuchFieldException, IllegalAccessException {
Field pageField = UI.class.getDeclaredField("page");
pageField.setAccessible(true);
pageField.set(ui, page);
}
@Test
public void testNotification() {
ui.getButton().click();
verify(page).getLocation();
}
}
这次测试的功能是这个点击监听器:
button.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent clickEvent) {
Notification.show("You are at: " + Page.getCurrent().getLocation());
}
});