首页 > 解决方案 > 赛普拉斯:“任务”事件尚未在插件文件中注册。您必须在使用 cy.task() 之前注册它

问题描述

我正在使用 Cypress 为我的 Web 应用程序编写端到端测试。在我的测试中,我正在尝试创建一个任务https://docs.cypress.io/api/commands/task。但它抛出了一个错误。这就是我所做的。

我在 plugins/index.js 文件中声明了一个任务,如下所示。

module.exports = (on) => {
    on("task", {
        setTestId(id) {
            testId = id;
            return null;
        },
        getTestId() {
            return testId;
        }
    });
};

然后我在测试中使用任务如下。

cy.task('setTestId', 7654321);

当我运行测试时,我收到以下错误。

The 'task' event has not been registered in the plugins file. You must register it before using cy.task()

如您所见,我也尝试了此解决方案,赛普拉斯任务失败并抱怨任务事件尚未在插件文件中注册。它也没有工作。我的代码有什么问题,我该如何解决?

标签: cypress

解决方案


您缺少一些格式(“:”和“=>”等)。尝试这个:

module.exports = (on) => {
  on("task", {
      setTestId: (id) => {
          testId = id;
          return null;
      },
      getTestId: () => {
          return testId;
      }
  });
};

像你一样设置testId:

cy.task('setTestId', 7654321);

当您要检索 testId 时,请使用:

cy.task('getTestId').then((testId) => {
   cy.log(testId)
});

推荐阅读