Подтвердить что ты не робот

Единичное тестирование RavenDB

В моих модульных тестах я настраиваю каждый тест, чтобы иметь полностью пустой IDocumentSession. Я делаю это так:

[SetUp]
public void SetUp()
{
  _store = new EmbeddableDocumentStore
  {
     RunInMemory = true
  };

  _store.Initialize();

  Session = _store.OpenSession();
}

Но я думаю, что это может быть причиной того, что мои тесты немного медленны. Мне было интересно, есть ли простая команда для удаления всех документов из базы данных.

Я хочу знать: если я могу это сделать, и если это улучшит производительность.

4b9b3361

Ответ 1

Это рекомендуемый подход для модульного тестирования с помощью ravendb Не рекомендуется для производства в основном работает в режиме памяти Если вы обнаружите, что это медленно, попробуйте профилировать и выяснить, что именно замедляет работу.

Ответ 2

Попробуйте использовать RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true.

        var _store = new EmbeddableDocumentStore()
        {
            Configuration =
                {
                    RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true,
                    RunInMemory = true,
                }
        };

Ответ 3

Дорогим вызовом является _store.Initialize() - вы заставляете RavenDb поддерживать новую базу данных каждый тест. В большинстве случаев будет работать одна база данных для каждого набора тестовых наборов.

Другим вариантом будет использование идентификаторов природы или RavenDb для пространств имен ваших тестов. Это очень удобно, если реальная проблема - это дубликаты ключевых ошибок и другие инженерные вещи, поэтому у вас нет неприятной очистки.