Как заставить MUnit DB Server создать таблицу из файла CSV

Попытка использовать сервер БД MUnit для имитации таблицы базы данных с использованием файла CSV. Проблема в том, что я получаю ошибки таблицы не найдены.

Я следую этим двум статьям:

Запуск примера из статьи help.mulesoft.com приводит к той же ошибке.

Как заставить сервер БД MUnit создать таблицу из CSV-файла?

Вот тест и конфиг

<dbserver:config name="MUnit_DB_Server_Config" doc:name="MUnit DB Server Config" doc:id="c861f371-037e-4c90-92ab-d8affc693bb6" >
    <dbserver:connection csv="EP0001F1.csv" database="DEV" connectionStringParameters="MODE=DB2" />
</dbserver:config>
<db:config name="Test_Database_Config" doc:name="Database Config" doc:id="7b8b820d-f517-498e-8d3c-92ee7a09fe35" >
    <db:generic-connection url="${db.url}" driverClassName="${db.driver}" />
</db:config>
<munit:test name="get:\(country)\associates\workforce\links:associate-workforce-link-sapi-config-200-application\json-FlowTest" description="Verifying functionality of [get:\(country)\associates\workforce\links:associate-workforce-link-sapi-config-200-application\json]">
    <munit:enable-flow-sources>
        <munit:enable-flow-source value="associate-workforce-link-sapi-main" />
        <munit:enable-flow-source value="get:\(country)\associates\workforce\links:associate-workforce-link-sapi-config" />
    </munit:enable-flow-sources>
    <munit:behavior>
        <set-variable variableName="country" value="#['US']" doc:name="country" />
    </munit:behavior>
    <munit:execution>
        <http:request config-ref="HTTP_Request_Configuration" method="GET" path="#['/$(vars.country)/associates/workforce/links']" responseTimeout="30000">
            <http:headers><![CDATA[#[{"Accept":"application/json"}]]]></http:headers>
        </http:request>
    </munit:execution>
    <munit:validation>
        <munit-tools:assert-that expression="#[attributes.statusCode]" is="#[MunitTools::equalTo(200)]" message="The HTTP Status code is not correct!" doc:name="Assert That Status Code is 200" />
        <munit-tools:assert-that expression="#[output application/java ---write(payload, 'application/json') as String]" is="#[MunitTools::equalTo(MunitTools::getResourceAsString('scaffolder/response/get_200_{country}_associates_workforce_links_application_json.json'))]" message="The response payload is not correct!" doc:name="Assert That - Payload is Expected" />
    </munit:validation>
</munit:test>

Характеристики

db:
  url: "jdbc:h2:mem:DEV;DB_CLOSE_DELAY=-1"
  driver: "org.h2.Driver"
db-config:
  name: "Test_Database_Config" 

Ошибка, которую я получаю,

ERROR 2019-12-26 09:58:48,394 [[MuleRuntime].io.09: [associate-workforce-link-sapi].GetLinks.BLOCKING @4d5314c4] org.mule.runtime.core.internal.exception.OnErrorPropagateHandler: 
********************************************************************************
Message               : Table "EP0001F1" not found; SQL statement:
select * from EP0001F1 order by EPDRC desc [42102-166].
Error type            : DB:QUERY_EXECUTION
Element               : GetLinks/processors/1 @ associate-workforce-link-sapi:implementation.xml:11 (Select)
Element XML           : <db:select doc:name="Select" doc:id="9b7e9a39-10bf-44ca-a7af-eaa5b0189ece" config-ref="${db-config.name}" maxRows="100">
<db:sql>select * from EP0001F1 order by EPDRC desc</db:sql>
</db:select>

Файл CSV копируется в папку тестовых классов введите здесь описание изображения

И я знаю, что используется драйвер h2 (в отличие от фактического драйвера), поскольку причиной исключения является org.h2.jdbc. введите здесь описание изображения


person Joe Young    schedule 26.12.2019    source источник


Ответы (1)


вы работаете с Mule 4.2.2? Эта проблема связана с этой версией исправления среды выполнения, вызывающей эту проблему. Если вы запускаете свои тесты с Mule 4.2.1, он должен работать, вы можете изменить mule-artificat.json, чтобы он требовал 4.2.1 в качестве minMuleVersion, а в конфигурации запуска MUnit также установите версию среды выполнения на 4.2.1. Все остальное вроде правильно.

введите здесь описание изображения

person Matias Pentreath    schedule 26.12.2019
comment
Я попробовал аналогичный (не такой, как указано выше) тестовый пример для mock db, и он работал в версии 4.2.1, а не в версии 4.2.2. Так что пока я бы придерживался версии 4.2.1 для тестовых случаев MUnit. - person Uresh Kuruhuri; 08.01.2020
comment
Привет, Уреш, выпущена новая версия DB Utils (v2.0.2), которая работает с Mule 4.2.2, но в URL-адресе JDBC есть изменение, вам нужно добавить tcp:://localhost следующим образом : ‹db:generic-connection url=jdbc:h2:tcp://localhost/mem:DATABASE_NAME driverClassName=org.h2.Driver /› - person Matias Pentreath; 10.01.2020
comment
Спасибо @Matias, я попробую. - person Uresh Kuruhuri; 11.01.2020
comment
Я попробовал, и это сработало для версии 4.2.2. Итак, версия 4.2.2 теперь покрыта. - person Uresh Kuruhuri; 11.01.2020