小编Viv*_*vek的帖子

如何使用Mockito部分模拟HttpServletRequest

我在模拟一个HttpServletRequest,在servlet调用中有新的值在请求中设置,因为使用相同的请求我们正在向一些jsp调度请求,因此请求对象被用作servlet的输入对象以及下一页的输出.

我嘲笑了所有的输入参数,但对于所有的request.setAttribute(),我的代码什么也没做,因为它是一个模拟类,比如我有

request.setAttribute(a,"10")
System.out.println("a = " + request.getAttribute("a"));
Run Code Online (Sandbox Code Playgroud)

我得到null因为我没有给Request.getAttribute("a")任何行为,我不能,这是我对下一页的回应,所以解释我需要2个行为我的请求对象因此部分嘲笑,而我到目前为止我无法间谍或做任何部分嘲弄.有任何想法吗?

代码:

 //Testcase
   Myservlet.java
public void doPost(request,response)
    {
         String a = request.getAttribute("a");
         String b = request.getAttribute("b");
         int sum = Integer.parseInt(a) + Integer.parseInt(b);
         request.setAttribute("sum",sum);
         //well in this example i can use sum what i calculated but in real senario i can't , i have to use request.getAttribute("sum")
         insertSumIntoDB(request.getAttribute("sum"));
    }
    }



  //testMyservlet.java
   @test
public void testServlet()
 {
 HttpServletRequest request = mock(HttpServletRequest.class);
     HttpServletResponse response = mock(HttpServletResponse.class);
when(request.getAttribute(a)).thenReturn("10");
when(request.getAttribute(b)).thenReturn("20");
new Myservlet(request,response);
}
Run Code Online (Sandbox Code Playgroud)

java unit-testing junit4 mockito

11
推荐指数
2
解决办法
3万
查看次数

如何模拟servletContext而不是Servlet或HttpServletRequest?

我有一个独立的项目来编写测试用例; 问题是我无法模拟HttpServletRequest,只是因为在我的servlet中有一些调用就像getServletContext()测试用例是从外部servlet容器运行的.它总是会返回一个错误,说"没有找到上下文".这只是servlet容器的一个依赖项; 可能有数百个.例如,initialContext.lookup()还取决于容器.

在这种情况下,如何使用Mockito编写测试用例?请不要询问错误信息; 它更像是一个逻辑问题,而不是技术问题.

在互联网上寻找教程让我想知道我是否做了严重的错误.似乎没有人在遇到过这个问题之前......你怎么能在HttpServletRequest没有getServletContext()调用servlet的情况下进行模拟?我的意思是认真的,它有多罕见?

java unit-testing mockito java-ee

9
推荐指数
1
解决办法
1万
查看次数

无法将间谍放在HttpSession/Mockito上

我想要部分嘲笑,Httpsession但为此我需要窥探而不是嘲笑它,而且这是一个我已经无法获得的请求对象无法获得的接口.

请帮忙.

换句话说,我怎样才能得到HttpSession没有HttpServletRequest物体的物体.

更多详情::

有一个我要测试的servlet,servlet有会话,并在会话中放入"loginBean"(包含loged在用户相关信息中),我已经嘲笑过并且工作正常,现在在GUI级别,有2个选项卡,DetailSet1, detailsS​​et2,当您输入DetailSet1的数据时,它会保存在会话中并且还会执行一些业务逻辑,现在它来到DetailsS​​et2,您已经在会话中拥有DetailSet1,因此它可以满足所有需要,数据保存在DB中.不,很明显我必须模拟,HttpSession因为我从容器外部运行单元案例,但是存储的数据也在Httpsession ,如果我也嘲笑那些,它就会破坏测试的目的.回到我开始的时候,我需要Httpsession返回模拟数据的对象,我已经模拟了它,并且假设它像HttpSession其他情况的任何普通对象一样.就像,如果我做session.setAttribute("name","Vivek"),那么session.getAttribute("name")应该return "Vivek"在那之后,但是在模拟对象的情况下它返回null原因?因为我没有嘲笑行为getAttribute("name").我真的很抱歉,如果我仍然可以不让任何人理解我的要求.

用简单的词语部分嘲笑HttpSession.

java unit-testing mockito

4
推荐指数
1
解决办法
1270
查看次数

用于编号类/id 的 CSS 选择器

我有以下情况:

<div id="myMenu">
   <div id="menu0">stuffs</div>
   <div id="menu1">stuffs</div>
   <div id="menu2">stuffs</div>
   ...... and so on
</div>
Run Code Online (Sandbox Code Playgroud)

我的要求是访问$=menu内部有 id 的所有 div,myMenu除了menu0,因为我的菜单可以有 10 到 15 个项目,所以一种方法是:

 #myMenu > menu1 {style}
 #myMenu > menu2 {style}
 so on... 15 times
Run Code Online (Sandbox Code Playgroud)

但由于我必须为所有这些提供相同的样式,这似乎没有必要,我正在寻找能够正确满足我的要求并且兼容 IE8 的 CSS 选择器。

任何帮助是极大的赞赏。

html css cross-browser css-selectors

4
推荐指数
1
解决办法
1159
查看次数

部分模仿HttpSession

有一个我想要测试的servlet,servlet有会话,并在会话中放入"loginBean"(其中包含登录的用户相关信息),我已经嘲笑并且工作正常,现在在GUI级别,有2个选项卡,DetailSet1, detailsS​​et2,当你输入DetailSet1的数据时,它会被保存在会话中并且也会做一些业务逻辑,现在它来到DetailsS​​et2,你已经在会话中有了DetailSet1,所以它得到了它所需要的一切,数据保存在DB中.现在很明显我必须模拟HttpSession,因为我从容器外部运行单元格,但是存储的数据也在HttpSession中,如果我也嘲笑它们,它就会破坏测试的目的.所以我的问题是,我需要HttpSession对象返回我模拟的模拟数据,并假设其他情况下的任何正常HttpSession对象.就像,如果代码确实如此session.setAttribute("name","Vivek"),那么之后session.getAttribute("name")应该返回"Vivek",但是在模拟对象的情况下它返回"NULL"为什么?因为我没有嘲笑"getAttribute("name")的行为.

简单来说,HttpSession或Interfaces的部分模拟.

java junit unit-testing mockito

2
推荐指数
1
解决办法
3816
查看次数