Как создать org.jooq.Result для модульного тестирования - PullRequest
1 голос
/ 28 мая 2020

Я пишу модульные тесты для выборки записей из Oracle БД с использованием библиотеки JOOQ, и мне нужно имитировать данные, возвращаемые функцией DSLContext fetch(). Как я могу создать образец Result<Record>, который будет возвращен имитируемой функцией? Я погуглил несколько часов и не нашел ответа.

1 Ответ

1 голос
/ 28 мая 2020

Попробуйте использовать собственный mock API JOOQ. Вот официальные документы

Вы, вероятно, захотите получить что-то вроде этого:

final MockDataProvider myMockProvider = new MockDataProvider() {
    @Override
    public MockResult[] execute(final MockExecuteContext context) throws SQLException {
        final DSLContext context = DSL.using(SQLDialect.ORACLE);
        final Result<Record> resultRecord = context.newResult(YOUR_TABLE_HERE);

        // customize your record with needed fields

        resultRecord.add(context.newRecord(YOUR_TABLE_HERE));

        return new MockResult[] { new MockResult(1, resultRecord) };
    }
};

final DSLContext mockedDSL = DSL.using(new MockConnection(myMockProvider), SQLDialect.ORACLE);

// here you go with your tests
...