Я решил свою проблему, просто добавив конфигурацию хранилища токенов, она делает именно то, что мне нужно - отслеживать обработанные события.
Базовая конфигурация пружины:
@Bean
fun tokenStore(client: MongoClient): TokenStore = MongoTokenStore.builder()
.mongoTemplate(DefaultMongoTemplate.builder().mongoDatabase(client).build())
.serializer(JacksonSerializer.builder().build())
.build()
Я бы начал с FakeWeb и посмотрел, отвечает ли это вашим потребностям. Если этого не произойдет, вы, вероятно, сможете избавиться от всего, что вам нужно, и создать собственное решение.
Вы можете посмотреть на VistaDB, если пишете в .NET. Это 100% управляемый код, содержит истинную ссылочную целостность, сохраненные в tsql процессы, процедуры clr и многое другое в одной сборке, которую можно развернуть с помощью xcopy.
VistaDB работает на сайтах общего хостинга asp.net со средним доверием, а также в доменах активных каталогов в качестве гостя (без локальных разрешений).
На компьютере, на котором вы развертываете ядро, не требуются параметры реестра или другие параметры конфигурации. и среда выполнения бесплатна.
Поддержка 32/64 бит включена в одну сборку. Механизмы смешанного режима с неуправляемым кодом, как правило, требуют, чтобы вы поставили более 1 версии неуправляемого кода для поддержки 32- и 64-разрядных или перекомпилировали для конкретных целей ЦП.
См. Преимущества VistaDB SO поток для получения дополнительной информации.
Я бы либо использовал FakeWeb, как упомянуто выше, либо попросил бы мою тестовую задачу rake запустить экземпляр Webrick для небольшого приложения sinatra, которое высмеивает различные тестовые ответы, которые вы надеетесь увидеть.
Для тестирования клиента веб-сервиса мы используем Sinatra , симпатичный маленький легкий веб-фреймворк, который позволяет вам быстро что-то запустить и запустить без труда. Проверьте домашнюю страницу; у него есть целое приложение Hello World в 5 строках кода и две команды для установки и запуска всего этого.
Вы можете использовать Rack для этого, что позволит вам делать все, что вам нужно.
На самом деле не так уж и сложно получить собственные поддельные ответы напрямую с помощью Net :: HTTP.Вот простой 200 OK с заголовком cookie:
def fake_response
net_http_resp = Net::HTTPResponse.new(1.0, 200, "OK")
net_http_resp.add_field 'Set-Cookie', 'Monster'
RestClient::Response.create("Body goes here", net_http_resp, nil)
end
Поскольку немногие из нас больше используют чистый Net :: HTTP, последняя (необязательная) строка превращает его в RestClient :: Response
, который может затем быть вставленным в RestClient:
stub(RestClient).post(anything) { fake_response }