小编Pus*_*a D的帖子

使用 jest 测试具有异步函数侦听器的 eventEmitter

我定义了一个async函数,其中包含await语句,并将其用作 pubsub 订阅消息的侦听器。想用玩笑来测试这个。但面临着一个问题。

代码:


const pubsubPull = () => {
  const pubsub = new PubSub();
  const subscription = pubsub.subscription("test-sub");
  const handler = async message => {
    try {
      const payload = Buffer.from(message.data, "base64").toString();
      const data = JSON.parse(payload).data;
      await repository.insert(data);
      message.ack();
    } catch (err) {
      console.log("error")
    }
  };
  subscription.on("message", handler);
};
Run Code Online (Sandbox Code Playgroud)

测试:

jest.mock("@google-cloud/pubsub");
jest.mock("./repository");

describe("listener", () => {
  const data = {
    id: "3ce91594-f648-41bf-9a37-4fa09c4afb3b",
    name: "ABCD",
    value: 1234
  };
  const eventBuffer = Buffer.from(JSON.stringify(data));
  const message = { …
Run Code Online (Sandbox Code Playgroud)

node.js eventemitter jestjs google-cloud-pubsub

4
推荐指数
1
解决办法
2417
查看次数