繁体   English   中英

本地方法未更新模拟类的实例变量

Local method is not updating the instance variables of my mocked class

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我是mockito的新手。 现在花了一天多的时间,试图弄清楚它是如何工作的。 这是我的不得已。

我的课如下:

class Check{
  //Map<String, Long> map1 = new HashMap<String, Long>();
  //Map<String, Long> map2 = new HashMap<String, Long>();

boolean myLocalMethod(String key, Map<String, Long> map1){
  if(map1.get(key) == null){
    map1.put("name", (long)10);
    return false;
  }
  else if(map1.get(key) == 10)
          return true;
       else
          return false;
}

我有一个测试课,如下所示:

class TestCheck(){
 Check mockTest = mock(Check.class);

 @Test // using testng. That's what I like
 public void testMyLocalMethod(){
   Map<String, Long> map1 = new HashMap<String, Long>();
   Assert.assertFalse(mockTest.myLocalMethod("name", map1));
   map1.put("name", (long)10);
   Assert.assertTrue(mockTest.myLocalMethod("name", map1)); // fails

如果有人可以在这里给我一些指导,那就太好了。 提前致谢!

2 个回复

当您要求Mockito模拟一个类时,它会覆盖您现有的实现。 在内部,它定义了一个新类,如果您明确地进行了新操作,并且不使用when或类似方法添加任何其他行为,则它在基本级别上看起来像这样:

class MockCheck extends Check {
  @Override
  void myLocalMethod(String key) {}
}

即,调用myLocalMethod实际上并不会调用父类的myLocalMethod版本。

如果要使用Check的实现,只需将其实例化为常规对象即可:

Check mockTest = new Check();

如其他人所述,模拟对象将不会使用您的实际实现。 但是,您可以使用Spy对象来验证行为,而在使用实际实现时,请参阅监视真实对象

1 验证模拟类方法调用的类实例部分(self)

我在嘲笑一个类实例方法。 例如Blob.upload_from_filename这个方法会在不同的对象上被调用多次。 我需要验证方法调用。 但是我真正需要验证的调用部分是调用该方法的实例对象。 with mock.patch("Blob.upload_from_filename") as mock ...

4 在 Python 中调用模拟方法的类的测试实例

我正在模拟一个类的方法,并想测试调用该方法的类的实例,以测试我的函数的创建部分是否按预期工作。 在我的特殊情况下, do_stuff尝试将bar_instance写入 Excel 文件,我不希望发生这种情况,即 然后在测试文件中 在foo(*test_args)运行后,我在测试函数中放置了 ...

5 修补模拟类的方法

我的代码具有以下结构: 我有一个继承自BaseClass的类MyClass (这是一个附带的点,而不是我的问题的根源)。 然后我有另一个类MyClassManager调用MyClass的方法。 我正在为MyClassManager的方法编写单元MyClassManager ,我想控制MyClas ...

6 禁用未模拟的类中的方法

我有一个带有解析器的简单类 然后我有我的测试课 我需要做的是为测试禁用 doSomething1,因为它基本上是在执行 API 调用,因此我可以测试结果。 我怎样才能做到这一点? ...

7 NullPointerException在模拟的类方法

我目前正在为Buy类的buy方法编写一个测试,该测试应该实际测试是否正确的请求发送到服务器,以及它是否正确处理了响应。 目前,我总是收到java.lang.NullPointerException,因为execute(post)返回null而不是CloseableHttpResponse。 ...

8 类方法中的实例变量(必需)

我试图从以前的视图控制器创建一个类。 它仅包含一些数据库设置调用。 在我的研究中,我发现我收到“方法的未知类...”错误,因为我没有正确定义类方法。 这是我的东西: 这就是我将课程更改为: 但是,我现在收到的是很多错误。 所有这些基本上都是围绕实例变量而不是通过类方法访问 ...

9 模拟类不接受Carbon实例

我正在尝试用PhpUnit和Mockery测试一种方法。 在指定应使用参数调用方法的过程中,我的测试失败。 测试: 实码: 测试错误: $this-&gt;eventRepo在测试中是$this-&gt;eventRepo的。 真实的代码正确运行。 错误显示后 ...

10 使用Sinon获取模拟类的实例

我有以下课程: 可以这样称呼: 使用Sinon,有没有一种方法可以模拟在参数service传递的类,以便可以访问传递给service构造函数的参数? 我想要的功能可能看起来像这样: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM