我应该如何处理真正缓慢的Firestore测试?

时间:2019-06-09 14:42:01

标签: firebase google-cloud-firestore jestjs firebase-tools

我已经与Jest建立了针对Firestore的CRUD操作的单元测试,以及安全规则。测试取决于本地运行的firestore-emulator。

问题是从数据库读取和写入非常慢。几乎总是超过默认超时时间。

Jest估计需要105秒才能运行大约30个测试。

测试实际上要在完成时才能工作,但是我相信它不会花这么长时间。

除其他事项外,我尝试将默认超时时间增加到15s,但这还不够。

测试示例:


beforeAll(async () => {

    jest.setTimeout(10000); 
    const app = initializeAdminApp({ projectId: "firestore-test" }); 
    //NOTE: "interfaces" is just a wrapper for CRUD on my documents
    const users = interfaces(app).users;
});

afterEach(async () => {

    await clearFirestoreData({
        projectId: `firestore-test`
    });
}); 

afterAll(async () => {

    await Promise.all(apps().map(app => app.delete()))
}); 

// NOTE: often (not always) takes a long time to complete.
it("is possible to delete", async () => {

    const id = await reviews.createOne(dummy.review()); 

    const before = reviews.read(id)
    await reviews.delete(id); 
    const after = reviews.read(id); 

    assertSucceeds(before); 
    assertFails(after); 
});

我希望对firestore-emulator的操作所花的时间应该少于它。

更新:事实证明,问题主要出在clearFirestore上,它是在每次测试后完成的。这样将运行时间减少到18s。 但是,理想情况下,我想在每次测试后清除元素,以使测试更加独立。

clearFirestore是否需要花费这么长时间?

0 个答案:

没有答案