如何验证是否调用了printPreview.createShowReport();
。我甚至不能设置mock对象,因为一旦我调用该方法,它就会实例化为null并创建新对象。
public void previewOrDirectPrint(File file, boolean val) {
try{
printPreview=null;
printPreview=new ExamReportPrintUI(this,file);
}
catch(Exception e){
e.printStackTrace();
}
if(!val)
{
printPreview.createShowReport();
}
else
{
printPreview.createHideReport();
printInitiate();
closeReportPreview();
}
here is my test case
@Test
public void testpreviewOrDirectPrint()
{
File file=new File("/Desktop/config/reportTemplate.html");
examReportManager.previewOrDirectPrint(file, false);
assertNotNull(Whitebox.getInternalState(examReportManager, "printPreview"));
}
Can anyone help me how to access the object or create mock and set to it. I can only verify if the object is mock.
我尝试使用Whitebox.setInternalstate("obj",",mockject)设置。
不使用PowerMockito的解决方案如下:
1)添加一个方法,该方法将负责返回一个实例的检查报告PrintUI
,并更改测试中的方法,以获得该实例的方式:
public void previewOrDirectPrint(File file, boolean val) {
try{
printPreview=null;
printPreview= getExamReportInstance(this,file);
}
...
}
ExamReportPrintUI getExamReportInstance(ExamReportManager e, File f){
return new ExamReportPrintUI(e,f);
}
2) 监视管理器并模拟getExamReportInstance方法以返回所需的模拟:
@Test
public void testpreviewOrDirectPrint()
{
ExamReportManager spyManager = Mockito.spy(examReportManager);
doReturn(examReportPrintUIMock).when(spyManager).getExamReportInstance(Mockito.any(ExamReportManager.class), Mockito.any(File.class));
File file=new File("/Desktop/config/reportTemplate.html");
examReportManager.previewOrDirectPrint(file, false);
assertNotNull(Whitebox.getInternalState(examReportManager,printPreview"));
}
现在,您可以控制该类的实例,并且可以注入配置的mock。
用PowerMockito
@RunWith(PowerMockRunner.class)
@PrepareForTest(ExamReportPrintUI.class)
public ExamReportManagerTest{
@Mock
ExamReportPrintUI examReportPrintUIMock;
@Test
public void testpreviewOrDirectPrint()
{
PowerMockito.whenNew(examReportPrintUI.class)
.withArguments(Mockito.any(ExamReportManager.class), Mockito.any(File.class))
.thenReturn(examReportPrintUIMock);
File file=new File("/Desktop/config/reportTemplate.html");
examReportManager.previewOrDirectPrint(file, false);
assertNotNull(Whitebox.getInternalState(examReportManager, "printPreview"));
}
}
问题内容: 我正在尝试装饰类中的方法,但是python抛出错误。我的课看起来像这样: : Python抛出以下错误 我要去哪里玩? 问题答案: Python自动将类实例作为参考传递。(在所有类方法中都可以看到的参数)。 您可以这样做:
问题内容: 我是Mockito的新手。 给定下面的类,如何在调用后使用Mockito验证一次foo被调用的对象呢? 我想打以下电话, 的模拟实例在哪里? 问题答案: 如果注入Bar实例,或用于创建Bar实例的工厂(或其他483种方法之一),则你将具有执行测试所需的访问权限。 工厂示例: 给定一个这样的Foo类: 在你的测试方法中,你可以像这样注入BarFactory: 奖励:这是TDD如何推动代码
我有一个正在测试的类,其中包含一个具有内部匿名类的方法。匿名类中的一个方法调用了被测试类中的一个方法,但Mockito似乎没有意识到这一点。 我的测试代码: 出于某种我似乎无法弄清楚的原因,Mockito无法检测到正在调用outerMethod(),尽管我已经通过在调试器中逐行手动验证。我还验证了对依赖对象的调用返回具有正确内容的正确可观察对象,并且确实调用了on完成()和outerMethod(
问题内容: 如何在method内部创建方法?当我创建其显示错误时: 令牌无效@上的语法错误 如果不能在方法内部创建方法,那么请告诉我如何在方法外部创建方法,并从方法中传递方法。 问题答案: *请注意,应使用没有不等号的实际类型(例如“ int”和“ short”)替换此类标记。
本文向大家介绍Yii2 如何在modules中添加验证码的方法,包括了Yii2 如何在modules中添加验证码的方法的使用技巧和注意事项,需要的朋友参考一下 最近玩了下Yii2的验证码部分,正常的逻辑都可以走通的,网上的例子也是没有问题的,关键有问题的部分是在module中使用的时候,分享给大家,往下看之前可以去看看正常情况下是如何使用的。 controller部分的代码,这里的跟网上的都类似