gpt4 book ai didi

java - 正在调用被识别为 'static member' 的模拟类,但在测试中它没有被识别为模拟类?

转载 作者:行者123 更新时间:2023-12-02 11:21:58 25 4
gpt4 key购买 nike

我 mock 了这个类(class),直到给我这个错误。不确定我在这里做错了什么,但我收到错误: when() 需要一个参数,该参数必须是“模拟上的方法调用” 在包含的行上

Mockito.when(trdi.strToInteger(newValueIn)).thenReturn(0);

该类被 mock ,但我不明白为什么它会给我这个错误。我的 IDE 还告诉我 trdi.strToInteger 是通过实例引用访问的静态成员。

public class TestApproved extends TestGroovy {

@Mock
private DataLayer dl;
@Mock
private DataStore dsIn;
@Mock
private DataStore ds;
@Mock
private TRDIUtils trdi;

@Parameterized.Parameter
public String client;

@Parameterized.Parameters(name = "{index}: {0}")
public static Object[] data() {
return new Object[]{
1, 2, 3, 4
};
}

private String newValueIn;

@Before
public void setUp() throws Exception {
//groovy script file to test
groovyScriptFile = new File(GROOVY_SCRIPTS_FOLDER + "/" + client + "/ToTest.groovy");

MockitoAnnotations.initMocks(this);

newValueIn = "1";

//groovy script parameters
addGroovyBindingVariable(GroovyScriptArgName.DATASTORE, dsIn);
addGroovyBindingVariable(GroovyScriptArgName.NEW_VALUE, newValueIn);
}

/**
* Test that user and date are nullified/disallowed to be updated if 'Approved' column is unchecked
*
*/
@Test
public void testUncheckedApproved() throws Exception{
Mockito.when(trdi.strToInteger(newValueIn)).thenReturn(0);

evaluate();
Mockito.verify(dsIn, Mockito.times(1)).setItemNull(1,"XX_APPROV_DATE");
Mockito.verify(dsIn, Mockito.times(1)).setItemNull(1,"XX_APPROV_USER");
}

最佳答案

为了模拟静态类,我们需要使用 PowerMockito。

使用以下调用来准备用于模拟的静态类方法

PowerMockito.mockStatic(TRDIUtils.class)

然后开始使用您的方法,如下所示

PowerMockito.when(TRDIUtilsstrToInteger(newValueIn)).thenReturn(0);

希望这有助于根据您自己的逻辑自定义它。快乐编码。

关于java - 正在调用被识别为 'static member' 的模拟类,但在测试中它没有被识别为模拟类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49848458/

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