Как использовать mappingsloader в Wiremock для загрузки файла (ов) сопоставлений?

Я создал свои сопоставления, записав транзакции сервера. Теперь я хочу использовать мои файлы сопоставлений json для загрузки сопоставлений. Для этого у меня есть код ниже:

import com.github.tomakehurst.wiremock.WireMockServer;

public class mockedTests{
    public static WireMockServer mockingServer;
    
    public void loadMaps(){
        mockingServer.loadMappingsUsing(****);
    }
}

Я проверил код макета, и методу loadMappingsUsing требуется MappingsLoader в качестве параметра. Однако я не могу найти способ правильно создать MappingsLoader. Я не смог найти ничего в документации и не могу найти в Интернете ни примеров, ни руководств. Более того, я застрял в использовании объекта WireMockServer, а не правила или объекта WireMock. Кто-нибудь знает, как я могу создать MappingsLoader для загрузки файлов json для моих сопоставлений? Я использую автономную версию Wiremock. Спасибо.


person mnsr    schedule 21.07.2020    source источник
comment
Вы уверены, что используете автономную версию WireMock? Похоже, вы используете версию Java. Как именно вы запускаете WireMock?   -  person agoff    schedule 22.07.2020
comment
Я использую автономную версию Java. Я запускаю сервер, запустив mockingServer.start() в моем методе junit @BeforeClass. Я использую эту версию: mvnrepository.com/artifact/ com.github.tomakehurst /   -  person mnsr    schedule 22.07.2020


Ответы (1)


По умолчанию WireMock будет искать файлы в папке /src/test/resources. Если вы создаете свой экземпляр WireMock на Java и ваши файлы в произвольном месте, вам необходимо передать объект option() с прикрепленным .usingFilesUnderDirectory("/path/to/files-and-mappings-root")

WireMockServer wm = new WireMockServer(options().usingFilesUnderDirectory("/path/to/files-and-mappings-root"))

Если вам нужно сделать это при запуске WireMock из командной строки, это будет примерно так:

$ java -jar wiremock-standalone-2.27.0.jar --root-dir "/path/to/files-and-mappings-root"

Я думаю, ваша исходная проблема может быть связана с тем, что ваш сервер WireMock или правило не запускаются с объектом options().

person agoff    schedule 22.07.2020
comment
Когда я создаю WireMockServer, кажется, что он игнорирует местоположение по умолчанию, и нет метода для настройки нового местоположения. Или еще не нашел. Я должен использовать WireMockServer, потому что другие методы конфликтуют со средой загрузки Spring, и я не могу это изменить. - person mnsr; 22.07.2020
comment
Что вы имеете в виду под игнорированием местоположения по умолчанию? Когда вы запускаете сервер, если вы пингуете его, чтобы получить текущие сопоставления, я предполагаю, что он будет пустым? Возможно, вы разместили свои сопоставления в неизвестном месте. Вы пытались изменить корневой каталог? Думаю, вы бы воспользовались методом .usingFilesUnderDirectory()? - person agoff; 22.07.2020
comment
Как ни странно, он не читает из каталога по умолчанию. Ниоткуда не читается. Он просто запускает сервер без загрузки карт. Более того, к моему ужасу, объект WireMockServer не имеет метода .usingFilesUnderDirectory(). Он есть только у WireMockRule. Для меня это тоже было довольно неожиданно. - person mnsr; 22.07.2020
comment
У вас есть /src/test/resources/ папка с вашими сопоставлениями и каталогами __files, относительно того, где находится WireMockServer код, ИЛИ где код вызывается? И вы пытаетесь создать WireMockServer с .usingFilesUnderDirectory() вот так: WireMockServer wm = new WireMockServer(options().usingFilesUnderDirectory("/path/to/directory"));? - person agoff; 23.07.2020
comment
Первый да ... второй нет! У меня есть каталог, я не знал о options().usingFilesUnderDirectory("/path/to/directory")! Я прочитал много руководств и примеров кода, но впервые вижу options()! Позвольте мне попробовать и вернуться! - person mnsr; 23.07.2020
comment
Хорошо, глупый вопрос ... но откуда мне импортировать 'options ()'? Я нашел статический в com.github.tomakehurst.wiremock.client.WireMock.options, но у него нет .usingFilesUnderDirectory(). - person mnsr; 23.07.2020
comment
Нашел! Это import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; - person mnsr; 23.07.2020
comment
Да, он находится в верхней части документации по конфигурации: wiremock.org/docs/configuration. Решил ли переход на использование options().usingFilesUnderDirectory() ваши проблемы? - person agoff; 23.07.2020
comment
Я не знаю, как и почему, но я полностью пропустил страницу с конфигурационной документацией! Да, это исправило. Большое спасибо за Вашу помощь. Вы самые лучшие! Если вы опубликуете его как ответ, я выберу его как правильный ответ. Спасибо еще раз! - person mnsr; 23.07.2020
comment
Замечательно, рад это слышать. Я просто обновлю этот ответ, чтобы включить информацию, которую мы обсуждали, если это нормально. - person agoff; 24.07.2020