gpt4 book ai didi

java - 本地方法没有更新我的模拟类的实例变量

转载 作者:太空宇宙 更新时间:2023-11-04 14:00:18 24 4
gpt4 key购买 nike

我是mockito新手。现在花了一天多的时间,试图弄清楚这是如何工作的。这是我最后的手段。

我有一个类(class)如下:

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

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

最佳答案

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

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

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

如果您想使用 Check 的实现,只需像常规对象一样实例化它:

Check mockTest = new Check();

关于java - 本地方法没有更新我的模拟类的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29357266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com