繁体   English   中英

如何从 k6 脚本查询 Firestore?

[英]How to query Firestore from a k6 script?

我们正在尝试通过集合上的 k6 脚本查询 Firestore。
为了集成 Firestore 库,我们在 k6 网站上遵循了本指南:
https://k6.io/docs/using-k6/modules/#setting-up-the-bundler

当我们运行我们的脚本时,我们得到了这个奇怪的错误,我们在 Firestore 文档中找不到:

@firebase / firestore:Firestore(8.1.2):查询'Query(target = Target(my_collection_here,orderBy:[timestamp(asc), name (asc)])的AsyncQueue初始化失败:TypeError:Value不是 object:未定义

脚本是这样的:

import 'core-js/stable';
import 'regenerator-runtime/runtime';
import firebase from 'firebase/app';
import 'firebase/firestore';
import { sleep } from 'k6';
import behavior from './tests/behaviors/index.js';
import scenariosAndStages from './tests/options/index.js';

const firebaseConfig = {
  apiKey: ***,
  authDomain: ***,
  projectId: ***,
  storageBucket: ***,
  messagingSenderId: ***,
  appId: ***,
};

firebase.initializeApp(firebaseConfig);
const db = firebase.firestore();

const conf = {
  multiply: __ENV.MULTIPLY || 1,
};

export const options = {
  ext: {
    loadimpact: {
      name: __ENV.NAME,
      projectID: __ENV.PROJECT_ID,
      distribution: {
        'amazon:us:ashburn': { loadZone: 'amazon:us:ashburn', percent: 100 },
      },
    },
  },
  discardResponseBodies: true,
  scenarios: __ENV.SCENARIOS ? { [__ENV.SCENARIOS]: scenariosAndStages.scenarios[__ENV.SCENARIOS] } : undefined,
  stages: scenariosAndStages.stages[__ENV.STAGES],
};

export default () => {
  db
    .collection('my_collection_here')
    .orderBy('timestamp')
    .get()
    .then(console.log);
  sleep(10);
  behavior.myBehavior('application load test one call', conf.multiply);
};

我们做错了什么?

经过一些简单的研究,我开始意识到Firestore JS SDK 需要 Node.js才能达到 function,因此根据k6 文档,它与 k6 不兼容。

我会推荐 Firebase 模拟器进行单元测试 如果更愿意模拟某些功能以进行测试,我建议使用 Jest,如下所示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM