无法在JOOQ中模拟存储过程

时间:2015-10-23 21:41:05

标签: java unit-testing mockito jooq

我正在尝试模拟使用JOOQ生成的存储过程。我不知道如何替换mock,并且抛出了nullptr异常。

这是代码

public class MyClass {
    public void findResults() {
        DSLContext create = DSL.using(ConnectionManager.getConnection(), SQLDialect.MYSQL);
        SpFindResultsByOrder findResultsByOrder = new SpFindResultsByOrder(); // Exception!
        findResultsByOrder.execute(create.configuration());

    }
}

测试

@PrepareForTest({DSL.class, ConnectionManager.class})
@PowerMockIgnore("javax.management.*")
@RunWith(PowerMockRunner.class)
public class JOOQTest {

    @Test
    public void shouldFindResultsByOrder() extends Exception {
        mockStatic(DSL.class);
        mockStatic(ConnectionManager.class);
        Connection cnxn = mock(Connection.class);
        DSLContext create = mock(DSLContext.class);
        SpFindResultsByOrder sp = mock(SpFindResultsByOrder.class);

        when(ConnectionManager.getConnection()).withAnyArguments().thenReturn(cnxn);
        when(DSL.using(cnxn,SQLDialect.MYSQL).thenReturn(create);
        whenNew(SpFindResultsByOrder.class).withAnyArguments().thenReturn(sp);

        MyClass mc = new MyClass();
        mc.findResults();

     }
}

上下文

当我尝试模拟我的JOOQ存储过程对象时,我得到一个nullptr异常。这是一个继承自AbstractRoutine<java.lang.Void>的生成对象。 在SpFindResultsByOrder findResultsByOrder = new SpFindResultsByOrder();,我的模拟没有被替换。而是制作了一个实际的SpFindResultsByOrder,我得到了一个nullptr异常。

我的例外情况如下:

Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.example.generated.routines.SpFindResultsByOrder.toString()

我的StoredProcedure中的架构对象抛出:

Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.example.generated.MyDatabase.toString()

0 个答案:

没有答案