Как настроить тестовые данные при тестировании Firestore в XCode с Firebase Emulator? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытался настроить Эмулятор Firebase с тестовыми данными в течение нескольких дней.

Что я сделал?

  • Я успешно развернул эмуляторы Firebase
  • I написал тест, который проверяет значение в эмулируемом Firestore, и тест также проходит.
func test_WhenPartyNameIsUnique_ThenErrorIsNil() {
   // given
   let exp = self.expectation(description: "Waiting for Firebase Emulator")

   // when
   self.sut.isUnique(partyName: "akshit") { (error) in
     // then
     XCTAssertNil(error)
     exp.fulfill()
   }

   self.waitForExpectations(timeout: 1, handler: nil)
}

В чем проблема?

Я не могу понять, как я бы настроил разные тестовые данные для каждого из тестов. Для вышеприведенного теста я хочу проверить, не является ли partyName уникальным (имеется в виду, что он уже присутствует в базе данных). Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Эмулятор Firestore теперь поддерживает импорт / экспорт. Итак, чтобы создать тестовый пример:

  1. Запустите эмуляторы (firebase emulators:start)
  2. Подключите ваше приложение или скрипт и создайте необходимые тестовые данные
  3. В другом окне терминала запустите firebase emulators:export ./some-directory

Теперь у вас будет снимок данных эмулятора Firestore в ./some-directory. Вы можете запустить эмуляторы с этими данными, выполнив:

firebase emulators:start --import=./some-directory

Сейчас это поддерживает только Firestore, но мы надеемся добавить импорт / экспорт в большее количество эмуляторов, использующих тот же поток в будущем.

0 голосов
/ 27 апреля 2020

Распространенный способ передачи данных в эмуляторы прямо сейчас - запуск кода для внедрения этих данных из кода вашего приложения при запуске.

Ведется работа над способом ввода данных при запуске в качестве опции командной строки для эмуляторов, но, как обычно: мы не можем давать никаких обещаний или указывать временные рамки. Однако до тех пор, пока это не произойдет, данные теста должны быть вставлены из вашего кода, как правило, в настройку тестов.

...