如何在不同的测试组中测试我的API调用?

恩佐·佩雷斯(Enzo Perez)

我先从react-testing-library开始,然后我试图测试API调用。我有两套,一套用于成功请求,另一套用于错误请求。

import React from "react";
import { render, waitForElementToBeRemoved } from "@testing-library/react";
import user from "@testing-library/user-event";
import App from "./App";
import { getUser } from "./serviceGithub";

jest.mock("./serviceGithub");

//Mock data for success and error, Im using the github api
const dataSuccess = {
    id: "2231231",
    name: "enzouu",
};

const dataError = {
    message: "not found",
};

const renderInit = () => {
    const utils = render(<App />);
    const inputUser = utils.getByPlaceholderText("ingrese usuario", {
        exact: false,
    });
    const buttonSearch = utils.getByRole("button", { name: /buscar/i });

    return { utils, buttonSearch, inputUser };
};

test("should success request to api", async () => {
    getUser.mockResolvedValue([dataSuccess]);
    const { utils, buttonSearch, inputUser } = renderInit();
    expect(utils.getByText(/esperando/i)).toBeInTheDocument();
    expect(buttonSearch).toBeDisabled();
    user.type(inputUser, "enzzoperez");
    expect(buttonSearch).toBeEnabled();
    user.click(buttonSearch);
    await waitForElementToBeRemoved(() =>
        utils.getByText("cargando", { exact: false })
    );
    expect(getUser).toHaveBeenCalledWith("enzzoperez");
    expect(getUser).toHaveBeenCalledTimes(1);
    expect(utils.getByText("enzouu", { exact: false })).toBeInTheDocument();
});

test("should error request to api", async () => {
    getUser.mockResolvedValue(dataError)
    const { utils, buttonSearch, inputUser } = renderInit();
    expect(buttonSearch).toBeDisabled();
    user.type(inputUser, "i4334jnrkni43");
    expect(buttonSearch).toBeEnabled();
    user.click(buttonSearch)
    await waitForElementToBeRemoved(()=>utils.getByText(/cargando/i))
    expect(getUser).toHaveBeenCalledWith('i4334jnrkni43')
    expect(getUser).toHaveBeenCalledTimes(1)
});

这里的问题是,在第二次测试中,最后一行expect(getUser).toHaveBeenCalledTimes(1)由于getUser调用2次而出错,但是如果我评论第一个测试,则第二次通过。

那么,我应该如何测试这种情况?我可以进行测试的方式还可以吗?

谢谢!

o

您可以使用jest.mockClear()带有beforeEach()afterEach()

出于清理目的,afterEach()将更为合适。

mockClear重置存储在mockFn.mock.calls中的所有信息,这意味着对于每个测试,您可以期望从零次开始调用getUser。

afterEach(() => {
  jest.clearAllMocks()
})

此外,使用screen@ testing-library / react而不是render使用查询时的返回值同样,mockResolvedValueOnce在这种情况下会更好。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不同的过程中调用夹具进行测试

来自分类Dev

如何在Angular 9组件单元测试中调用伪函数

来自分类Dev

如何在Laravel中测试DELETE API?

来自分类Dev

如何在 apiman 中本地测试 API?

来自分类Dev

我如何在 Maven 中创建不同的测试配置文件

来自分类Dev

如何在Jest的同一测试文件中的不同测试中以不同的方式模拟模块?

来自分类Dev

如何在Angular 1.5组件中对具有不同名称的绑定进行单元测试?

来自分类Dev

如何在OSGi中的不同包中扩展测试类

来自分类Dev

为什么TestNG测试中的非唯一组名会影响其他测试类?我可以在不同的测试类别中使用相同的组名吗?

来自分类Dev

如何在Microsoft Graph API中编写UpdateAsync的服务测试(将多个成员添加到单个请求中的组)

来自分类Dev

如何在numpy中测试所有行是否不同

来自分类Dev

如何在线测试不同设备中的apk?

来自分类Dev

如何在PHPUnit中的不同测试中共享对象

来自分类Dev

如何在javascript / jquery中测试日期的不同格式?

来自分类Dev

如何在每个测试中以不同的方式模拟用户模块?

来自分类Dev

如何在核心Web API中测试我的数据注释字段?

来自分类Dev

如何在Kotlin中测试调用顶级函数的代码?

来自分类Dev

如何在angular js中测试$ http调用?

来自分类Dev

如何在BroadcastReceiver中测试对PendingIntent.getBroadcast(...)的静态调用

来自分类Dev

如何在Jest测试中真正调用提取

来自分类Dev

如何在Android中测试静态方法调用?

来自分类Dev

如何在BroadcastReceiver中测试对PendingIntent.getBroadcast(...)的静态调用

来自分类Dev

如何在rspec中测试方法调用的顺序?

来自分类Dev

如何在集成测试中模拟对服务的调用?

来自分类Dev

我如何在规格测试中模拟ngOnInit()中的routeQueryParams

来自分类Dev

如何在go框架中为不同的测试强制执行测试顺序?

来自分类Dev

TestNg:如何在测试套件中运行特定测试以对不同的参数重复n次

来自分类Dev

如何在单元测试中重写被测试的类所调用的方法

来自分类Dev

如何在单元测试中重写被测试的类所调用的方法

Related 相关文章

  1. 1

    如何在不同的过程中调用夹具进行测试

  2. 2

    如何在Angular 9组件单元测试中调用伪函数

  3. 3

    如何在Laravel中测试DELETE API?

  4. 4

    如何在 apiman 中本地测试 API?

  5. 5

    我如何在 Maven 中创建不同的测试配置文件

  6. 6

    如何在Jest的同一测试文件中的不同测试中以不同的方式模拟模块?

  7. 7

    如何在Angular 1.5组件中对具有不同名称的绑定进行单元测试?

  8. 8

    如何在OSGi中的不同包中扩展测试类

  9. 9

    为什么TestNG测试中的非唯一组名会影响其他测试类?我可以在不同的测试类别中使用相同的组名吗?

  10. 10

    如何在Microsoft Graph API中编写UpdateAsync的服务测试(将多个成员添加到单个请求中的组)

  11. 11

    如何在numpy中测试所有行是否不同

  12. 12

    如何在线测试不同设备中的apk?

  13. 13

    如何在PHPUnit中的不同测试中共享对象

  14. 14

    如何在javascript / jquery中测试日期的不同格式?

  15. 15

    如何在每个测试中以不同的方式模拟用户模块?

  16. 16

    如何在核心Web API中测试我的数据注释字段?

  17. 17

    如何在Kotlin中测试调用顶级函数的代码?

  18. 18

    如何在angular js中测试$ http调用?

  19. 19

    如何在BroadcastReceiver中测试对PendingIntent.getBroadcast(...)的静态调用

  20. 20

    如何在Jest测试中真正调用提取

  21. 21

    如何在Android中测试静态方法调用?

  22. 22

    如何在BroadcastReceiver中测试对PendingIntent.getBroadcast(...)的静态调用

  23. 23

    如何在rspec中测试方法调用的顺序?

  24. 24

    如何在集成测试中模拟对服务的调用?

  25. 25

    我如何在规格测试中模拟ngOnInit()中的routeQueryParams

  26. 26

    如何在go框架中为不同的测试强制执行测试顺序?

  27. 27

    TestNg:如何在测试套件中运行特定测试以对不同的参数重复n次

  28. 28

    如何在单元测试中重写被测试的类所调用的方法

  29. 29

    如何在单元测试中重写被测试的类所调用的方法

热门标签

归档