Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JdbcTemplate的EasyMock断言错误-意外的方法调用_Java_Spring_Junit_Easymock - Fatal编程技术网

Java JdbcTemplate的EasyMock断言错误-意外的方法调用

Java JdbcTemplate的EasyMock断言错误-意外的方法调用,java,spring,junit,easymock,Java,Spring,Junit,Easymock,我正在尝试使用Easymock测试jdbctemplate.queryForObject()调用,但我得到一些断言错误:意外的方法调用jdbctemplate.queryForObject:预期:1,实际:0 我试图参考其他的答案,所以有一些类似的问题,并试图实施他们,但这没有帮助,我仍然停留在同一个地方。我还尝试将值传递为EasyMock.isA()或eq(),但仍然存在相同的错误。请说明我做错了什么 我正在使用EasyMock 3.5.1 AuthenticationDaoImpl.java

我正在尝试使用Easymock测试
jdbctemplate.queryForObject()
调用,但我得到一些
断言错误:意外的方法调用jdbctemplate.queryForObject:预期:1,实际:0

我试图参考其他的答案,所以有一些类似的问题,并试图实施他们,但这没有帮助,我仍然停留在同一个地方。我还尝试将值传递为
EasyMock.isA()
eq()
,但仍然存在相同的错误。请说明我做错了什么

我正在使用EasyMock 3.5.1

AuthenticationDaoImpl.java

public boolean checkIfCallExist(String ucid){
        String decision = null;
        String sql = "select count(*) from tablename where ucid=?"
        decision = jdbcTemplate.queryForObject(sql, new Object[]{ucid}, String.class);
        return (Integer.parseInt(decision)>0);
    }
@RunWith(EasyMockRunner.class)
public class AuthenticationDaoImplTest {

    @TestSubject
    private AuthenticationDaoImpl authenticationDaoImpl = new AuthenticationDaoImpl();

    @Mock
    JdbcTemplate jdbcTemplateObject;

    @Test
    public void checkIfCallExistTest(){
        String sql = "select count(*) from tablename where ucid=?";
        Object[] params = new Object[] { "testucid" };
        EasyMock.expect(this.jdbcTemplateObject.queryForObject(sql, params, String.class)).andReturn("0");
        EasyMock.replay(this.jdbcTemplateObject);
        boolean res = this.authenticationDaoImpl.checkIfCallExist("testUcid");
        assertEquals(false, res);
    }
}
authenticationdaoimpletest.java

public boolean checkIfCallExist(String ucid){
        String decision = null;
        String sql = "select count(*) from tablename where ucid=?"
        decision = jdbcTemplate.queryForObject(sql, new Object[]{ucid}, String.class);
        return (Integer.parseInt(decision)>0);
    }
@RunWith(EasyMockRunner.class)
public class AuthenticationDaoImplTest {

    @TestSubject
    private AuthenticationDaoImpl authenticationDaoImpl = new AuthenticationDaoImpl();

    @Mock
    JdbcTemplate jdbcTemplateObject;

    @Test
    public void checkIfCallExistTest(){
        String sql = "select count(*) from tablename where ucid=?";
        Object[] params = new Object[] { "testucid" };
        EasyMock.expect(this.jdbcTemplateObject.queryForObject(sql, params, String.class)).andReturn("0");
        EasyMock.replay(this.jdbcTemplateObject);
        boolean res = this.authenticationDaoImpl.checkIfCallExist("testUcid");
        assertEquals(false, res);
    }
}
错误堆栈跟踪

java.lang.AssertionError: 
  Unexpected method call JdbcTemplate.queryForObject("select count(*) from tablename where ucid=?", ["testUcid"], class java.lang.String):
    JdbcTemplate.queryForObject("select count(*) from tablename where ucid=?", ["testucid"], class java.lang.String): expected: 1, actual: 0
    at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
    at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
    at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:95)
    at org.springframework.jdbc.core.JdbcTemplate$$EnhancerByCGLIB$$a2fb2844.queryForObject(<generated>)
    at org.authenticationint.dao.AuthenticationDaoImpl.checkIfCallExist(AuthenticationDaoImpl.java:53)
    at org.authenticationint.dao.AuthenticationDaoImplTest.checkIfCallExistTest(AuthenticationDaoImplTest.java:83)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ...
java.lang.AssertionError:
意外的方法调用JdbcTemplate.queryForObject(“从tablename中选择计数(*),其中ucid=?”,[“testUcid”],类java.lang.String):
JdbcTemplate.queryForObject(“从表名中选择计数(*),其中ucid=?”,[“testucid”],类java.lang.String):应为1,实际为0
位于org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
位于org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
在org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:95)上
在org.springframework.jdbc.core.JdbcTemplate$$enhancerbyglib$$a2fb2844.queryForObject()上
位于org.authenticationnt.dao.AuthenticationDaoImpl.checkIfCallExist(AuthenticationDaoImpl.java:53)
位于org.authenticationnt.dao.authenticationdaoimpletst.checkIfCallExistTest(authenticationdaoimpletst.java:83)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
...

参数中有错误

Object[] params = new Object[] { "testucid" }

this.authenticationDaoImpl.checkIfCallExist("testUcid"); // should be testucid

啊!!一些小的打字错误是如何在几个小时内被忽视的。谢谢你指出。现在可以了。