如何解决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 举报,一经查实,本站将立刻删除。