在 Jest 中使用 Next.Js 测试 Api

2024-01-02

我想使用 Jest 为我的 Api 文件编写测试用例。它使用 Next.js。我尝试了很多方法,但无法获得任何文件覆盖率。

ApiFile.js

const axios = require('axios');
import getConfig from 'next/config';

export default async (req, res) => {
  const {query: { param }} = req;
  const response = await customerInfo(param);

  if (!response.data || response.data == null) 
    res.status(200).send({ data: [], status: response.status});
  else
    res.status(200).send({ data: response.data.results, status: response.status });
};
async function customerInfo(params) {
    const { serverRuntimeConfig } = getConfig();
    const URL = serverRuntimeConfig.API;
    const config = {
      timeout: 15000,
      headers: {
        'content-type': 'application/json'
      },
    };
    const customer_id = params[0];
    const url = `${URL}/customer/${customer_id}`;
    return await axios
      .get(`${url}`, config)
      .then(response => {
        return response
      })
      .catch(function(error) {
        throw error;
      });
  }

测试文件.js

import mockAxios from "axios";
import mockData from "./customerMock.json";
import customerInfo from "../[...param]";

describe('fetchData', () => {
  it('fetches successfully data from an API', async () => {
    const data = mockData.data; 
    jest.spyOn(mockAxios, 'default');
    const endpoint = '${URL}/customer/abcdef';
    const method = 'get';
    const params = {
      customer_id : 'abcdef'
    }
    customerInfo(params);
    expect(mockAxios.default).toBeCalledWith(params);
  });
  it('fetches erroneously data from an API', async () => {
    const errorMessage = 'Network Error'; 
    mockAxios.get.mockImplementationOnce(() =>
      Promise.reject(new Error(errorMessage)),
    ); 
    await expect(customerInfo('react')).rejects.toThrow(errorMessage);
  });
});

我尝试了很多方法。任何参考或建议都会起作用。 提前致谢


这是我如何做的一个例子对飞行数据 API 进行了单元测试 https://github.com/nhscc/airports.api.hscc.bdpa.org/blob/05368a1cd72ab26eb175153fa746e599163de01a/src/__test__/flights.test.ts使用 Jest 和next-test-api-route-handler https://www.npmjs.com/package/next-test-api-route-handler,一个包(我创建的!),用于为 Next API 路由编写单元测试。我的测试的结构与您的非常相似。

要通过 Jest 生成覆盖率数据(假设您安装了 Node),我运行以下命令:

npx jest --coverage --collectCoverageFrom 'src/**/*.ts' --collectCoverageFrom 'lib/**/*.ts'

具体来说,--coverage https://jestjs.io/docs/en/cli#--coverageboolean告诉 Jest 收集覆盖率数据,通常收集到目录中./coverage,以及可选的--collectCoverageFrom X https://jestjs.io/docs/en/cli#--collectcoveragefromglob告诉 Jest 仅从特定目录(或指定多个目录)收集覆盖范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Jest 中使用 Next.Js 测试 Api 的相关文章

随机推荐

  • jQuery DataTables 插件 - 添加自定义选项选择过滤器

    有人知道如何向 jQuery 数据表添加自定义选项选择过滤器吗 基本上是这样的示例页面 http datatables net examples plug ins range filtering html但不是有最小 最大文本字段 将它们更
  • Facebook 是 OpenID 提供商吗?

    Facebook 是 OpenID 提供商吗 我知道他们是 OpenID 支持者 但他们是否允许人们使用其 Facebook 凭据通过 OpenID 向其他网站进行身份验证 不 他们不是 OpenId 提供商 他们使用自己的类似于 Open
  • 在 JavaFX 中,绑定是动作侦听器的替代方案吗?

    我想知道在 JavaFX 中 绑定是否可以替代动作侦听器 事件 我们可以用绑定而不是事件处理来处理所有操作吗 No binding http docs oracle com javafx 2 binding jfxpub binding h
  • 通过 SSL 使用我自己的 GIT 服务器设置 TeamCity

    我有自己的GIT服务器存储库 可以通过HTTPS协议连接 我正在尝试设置 TeamCity 以连接到我的 GIT 存储库 但由于 HTTPS 协议而无法连接 在 Eclipse 中 我有一个设置 sslVerify false 我可以连接到
  • 使用react和next.js时找不到fs模块的错误如何解决

    我正在使用没有路由器设置的反应应用程序 我想构建我的 sitemap xml 文件 我尝试了一些模块 如 sitemap js react router sitemap sitemap generator 但这些模块会抛出错误 因为 fs
  • 第二次初始化时 AKFFTTap 停止工作

    这是讨论的延续here https stackoverflow com questions 49705736 akffttap stops generating data after some time 我正在 Swift 中构建一个适用于
  • Java 和 JavaScript 本质同时存在

    我有一个更大的 Maven 多模块项目 其中涉及多种语言 现在安装了 Eclipse JDT 和 JSDT 代码着色工作正常 但 JavaScript 中的代码完成功能不太好 这使得工作效率变得困难 Eclipse 似乎在我的项目中找不到
  • WinRT 从视频流中提取帧

    我正在使用内置摄像头解码条形码 我使用capElement Source CapturePhotoToStreamAsync从预览中捕获照片 它可以工作 但会冻结应用程序一小会儿 这感觉非常笨拙和错误 因此 我希望在后台执行此操作 同时在处
  • DropDownList如何选择默认值

    我的页面上有很多 DropDownList class BigViewModel public List
  • Android TextInputLayout/EditText 不是全尺寸并截断文本

    我有一个包含计算器的片段 只有三个监听输入的 TextInputEditTexts 这些输入在相对布局中设置 如下所示
  • Node.js 与其他 Web 技术相比的优势 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • scikit learn 中的特殊性

    I need specificity对于我的分类 其定义为 TN TN FP 我正在编写一个自定义记分器函数 from sklearn metrics import make scorer def specificity loss func
  • libtool 与 ar 用于创建静态库(xcode 链接器)

    在 Mac 10 5 上使用 xcode 通过 libtool 创建静态库和通过命令行使用 ar 都会生成一个 libMainProject a 文件 但是 当尝试使用 libtool 生成的文件链接到 xcode 应用程序时 我最终会收到
  • 带星号的批量 FOR 循环

    我有这个单行 CMD 文件 TEST CMD for f in 1 2 3 4 5 6 7 8 DO ECHO f 如果我运行这个 TEST this is a test 它正确地在单独的行上回显每个参数 即 this is a test
  • 渲染良好的网络字体解决方案

    挑战 提供动态网页字体 可在所有主要浏览器 设备和操作系统上呈现可接受的效果 故事 所以我过去使用过 cufon 或 sifr 后来放弃了这两种方式 转而使用 font face 在生产中使用 font face一段时间后 我有了一个可怕的
  • 如何解决读取图像文件时IOError:损坏的数据流?

    我在 Ubuntu 11 04 下工作 我正在尝试在我的 Django 项目中使用 PIL 遗憾的是 PIL 无法加载我的图像 以下是 PIL 设置摘要 PIL 1 1 7 SETUP SUMMARY version 1 1 7 platf
  • 为什么Java char原语占用2字节内存?

    Java char 原始数据类型是 2 个字节 而 C 是 1 个字节 有什么原因吗 Thanks Java 最初设计时 预计任何 Unicode 字符都可以容纳 2 个字节 16 位 因此char and Character进行了相应的设
  • 带有 Tibco Native Libs 的 Java Webstart

    我正在尝试部署一个使用nativeTibrv 的实施通过TibrvJ图书馆使用Java 网络启动 我已经把所有的Windows都打包了dlls从内部c tibco tibrv bin放入 Jar 文件并将它们添加到nativelib中的元素
  • 在 XML/XSLT 中转义美元符号

    我正在处理使用 XSLT 转换 XML 来自遗留系统 的要求 我在处理带有美元符号的标签时遇到了问题 这就是它们在遗留系统中存储和生成的方式 示例 XML 文件的示例
  • 在 Jest 中使用 Next.Js 测试 Api

    我想使用 Jest 为我的 Api 文件编写测试用例 它使用 Next js 我尝试了很多方法 但无法获得任何文件覆盖率 ApiFile js const axios require axios import getConfig from