使用WicketTester时,访问会话的属性会引发NullPointerException错误。
wicket 9之前也有类似的问题:单元测试mockito httpSession
讨论建议使用
测试员。getRequest()。getSession()。setAttribute(“用户名”、“测试用户1”);
而不是
测试员。getHttpSession()。setAttribute(“用户名”、“测试用户1”);
进行更改并未解决问题。使用wicket.apache.org/start/quickstart.html创建的完整项目可在github.com/rjngshn/WicketTesterSession找到
public class TestHomePage
{
private WicketTester tester;
@BeforeEach
public void setUp()
{
tester = new WicketTester(new RTApplication());
}
// https://stackoverflow.com/questions/70258881/wicket-9-unit-testing-mockito-httpsession
@Test
public void userPageRendersSuccessfully()
{
System.out.println("Testing userPageRendersSuccessfully ");
tester.getRequest().getSession().setAttribute("userName", "Test user 1");
System.out.println("Uesr name in session:" + tester.getHttpSession().getAttribute("userName"));
//start and render the test page
tester.startPage(UserPage.class);
//assert rendered page class
tester.assertRenderedPage(UserPage.class);
tester.assertModelValue("txtUserName", "Test user 1");
System.out.println("Complete testing userPageRendersSuccessfully ");
}
}
错误是:
[WARN] [stderr] java.lang.NullPointerException
[WARN] [stderr] at uk.ac.ox.ndph.ckb.UserPage.onInitialize(UserPage.java:19)
[WARN] [stderr] at org.apache.wicket.Component.fireInitialize(Component.java:883)
[WARN] [stderr] at org.apache.wicket.MarkupContainer.internalInitialize(MarkupContainer.java:1045)
......
diff --git ResearchTracker/src/test/java/uk/ac/ox/ndph/ckb/TestHomePage.java ResearchTracker/src/test/java/uk/ac/ox/ndph/ckb/TestHomePage.java
index 757269f..a9df941 100644
--- ResearchTracker/src/test/java/uk/ac/ox/ndph/ckb/TestHomePage.java
+++ ResearchTracker/src/test/java/uk/ac/ox/ndph/ckb/TestHomePage.java
@@ -21,8 +21,8 @@ public class TestHomePage
public void userPageRendersSuccessfully()
{
System.out.println("Testing userPageRendersSuccessfully ");
- tester.getRequest().getSession().setAttribute("userName", "Test user 1");
- System.out.println("Uesr name in session:" + tester.getHttpSession().getAttribute("userName"));
+ tester.getSession().setAttribute("userName", "Test user 1");
+ System.out.println("Uesr name in session:" + tester.getSession().getAttribute("userName"));
//start and render the test page
tester.startPage(UserPage.class);
//assert rendered page class
您似乎混淆了Wicket会话(org.apache.Wicket.Session
)和HttpSession。在测试中,您在HttpSession上设置了该属性,而在UserPage
中,您试图从Wicket会话读取该属性。
我有一个使用servlet会话属性显示div的问题 我有一个“result.jsp”页面。在jsp中,我有一个“生成URL”链接、一个空的输入文本字段和一个“addThis”div。链接“生成URL”调用jquery ajax方法“utilComp()”,它调用一个设置会话属性“saveLink”、返回一个值并填充空文本字段的servlet。 如果属性会话“saveLink”为空(因为尚未单击生成
我正在Codeigniter中创建API。在这个API中,我为用户提供了一个登录函数。如果登录成功,我将在CI会话中设置用户数据,并将会话返回给用户。 现在,用户可以使用该会话ID来验证他自己的所有其他请求,如添加/更新/删除。基本上,我希望当用户发送下一个请求时,我可以根据他的会话ID验证他的凭据。 客户请求代码: 上面是一个从客户端到服务器的登录请求示例。在服务器端,服务器验证客户端提供的凭据
问题内容: 我已经使用JSF和PrimeFaces实现了一个登录表单。我在PrimeFaces展示网站上使用了此示例。 我有一个Facelets页面来显示dataTable。现在,我需要将上面的登录表单与此表格页面集成在一起。因此,我在LoginBean.java中添加了几行内容来处理会话属性。 如果用户未登录,我需要在dataTable中隐藏一列。现在我的问题是,如何访问Facelets页面内的
问题内容: 如何获得服务器上所有活动的PHP会话的列表并从一个用户实例中访问它们? 激励的情况是显示站点上所有当前活动用户的列表,用户名存储在每个用户的PHP会话中。 注意:我知道我可以通过数据库(甚至文件系统)创建自己的状态,但是我正在寻找一种利用内置PHP会话机制的方法。 问题答案: 看到响应,尽管有可能,但这并不意味着您 应该 这样做。会话的存储格式没有记录,并且可能随时更改(即使在次要版本
问题内容: 是否可以从EntityManager中获取Hibernate Session对象?我想访问一些hibernate特定的API … 我已经尝试过类似的东西: 但是,一旦我在EJB中调用方法,我就会收到带有NullPointerException的“在EJB上调用期间发生系统异常” 我用玻璃鱼3.0.1 问题答案: Bozho和partenon是正确的,但是: 在JPA 2中,首选机制是e
问题内容: 如何以一种优雅的方式通过id获取任何HTTP会话或Web应用程序(Java 2 EE)中当前所有活动的HTTP会话? 当前,我有一个会话,一旦创建,便将其放入,一切正常,我可以随时通过会话ID从该映射中检索HTTP会话,但是看起来对象将永远不会完成……即使会话使该映射无效仍然引用无效的会话对象…我也已经阅读了这篇文章,在我看来,这是不可接受的… 换句话说,我需要一种可能性来查看任何Ht