微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cypress:模拟服务器端功能

如何解决Cypress:模拟服务器端功能

我正在构建 Next.js 应用程序。我有一个 server side route 用于使用 Magic 登录

import type { NextApiHandler } from 'next';
import { setTokenCookie } from 'utils/cookies';
import magic from 'utils/magic';
import { encryptSession } from 'utils/sessions';
import type { ApiErrorResponse } from 'utils/types';

export type LoginHandlerSuccessResponse = {
  done: true;
};

type LoginHandlerResponse = ApiErrorResponse | LoginHandlerSuccessResponse;

const loginHandler: NextApiHandler<LoginHandlerResponse> = async (
  request,response,) => {
  const authHeaders = request.headers.authorization;

  if (authHeaders) {
    const didToken = magic.utils.parseAuthorizationHeader(authHeaders);
    const Metadata = await magic.users.getMetadataByToken(didToken);
    const session = { ...Metadata };
    const token = await encryptSession(session);
    setTokenCookie(response)(token);
    return response.status(200).json({ done: true });
  }

  return response.status(400).json({ message: 'No token found in request.' });
};

export default loginHandler;

在我的 Cypress 测试中,我试图像这样存根 magic.users.getMetadataByToken 方法

describe.only('login and logout flow',() => {
  beforeEach(() => {
    // cy.stub(magic.users,'getMetadataByToken').resolves({
    //   email: 'test+success@magic.link',//   issuer: 'did:ethr:0x1e9FF803fFA22209A10A087cc8361d4aa3528c45',//   publicAddress: '0x1e9FF803fFA22209A10A087cc8361d4aa3528c45',// });
    // magic.users.getMetadataByToken = cy.stub();
  });

  // ...

但是由于某种原因,该函数没有被模拟。我认为这与代码在服务器端运行的事实有关。有没有办法模拟 API 路由中的特定行,而不必intercept 整个路由?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?