我嘲笑了这门课,直到给我这个错误。不知道我在这里做错了什么,但我在包含
的行上收到错误:when() requires an argument which has to be 'a method call on a mock'
Mockito.when(trdi.strToInteger(newValueIn)).thenReturn(0);
这个课程被嘲笑,但我不明白为什么它会给我这个错误。我的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");
}
答案 0 :(得分:1)
对于模拟静态类,我们需要使用PowerMockito。
使用以下调用为静态类方法做准备
PowerMockito.mockStatic(TRDIUtils.class)
然后开始使用您的方法,如下所示
PowerMockito.when(TRDIUtilsstrToInteger(newValueIn)).thenReturn(0);
希望这有助于根据自己的逻辑进行自定义。快乐的编码。