使用 Firebase Emulator 在 XCode 中测试 Firestore 时如何设置测试数据?

Aks*_*eri 1 ios firebase swift firebase-tools google-cloud-firestore

几天来,我一直在尝试使用测试数据设置 Firebase Emulator。

我做了什么?

  • 我已成功部署 Firebase 模拟器
  • 我编写了一个测试来检查模拟 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)
}
Run Code Online (Sandbox Code Playgroud)

有什么问题?

我无法弄清楚如何为每个测试设置不同的测试数据。对于上面的测试,我想检查 partyName 是否不是唯一的(意味着已经存在于数据库中)。我怎么做?

Sam*_*ern 6

Firestore 模拟器现在支持导入/导出。所以要创建一个测试用例:

  1. 运行模拟器 ( firebase emulators:start)
  2. 连接您的应用程序或脚本并创建您想要的测试数据
  3. 在另一个终端窗口中运行 firebase emulators:export ./some-directory

现在,您将拥有 Firestore 模拟器数据的快照./some-directory。您可以通过运行以下数据来启动模拟器:

firebase emulators:start --import=./some-directory
Run Code Online (Sandbox Code Playgroud)

目前这只支持 Firestore,但我们希望将来使用相同的流程将导入/导出添加到更多模拟器。