标签: jest-fetch-mock

如何监视在 jest 中导入的函数

在下面放入一个小片段:

import xyz from '../xyz'
function calculate() {
  return xyz(arg1, arg2).catch((err) => {
    func1()
    func2()
  })
}
export default calculate
Run Code Online (Sandbox Code Playgroud)

我只是想断言 xyz 是开玩笑地调用的。我该怎么做 ?

我尝试了以下方法但不起作用:

import * as myModule from '../xyz'
import calculate from '../../calculate'
const mock = jest.spyOn(myModule, 'xyz')
mock.mockReturnValue('mocked value')
const op = calculate()
expect(op).toBe('mocked value')
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

无法监视 xyz 属性,因为它不是函数;未定义给定代替

javascript unit-testing jestjs jest-fetch-mock

14
推荐指数
1
解决办法
1万
查看次数

如何使用 jest-fetch-mock 模拟获取响应

我在react功能组件中调用api。我正在编写组件的单元测试用例。我使用 jest-fetch-mock 模拟了 fetch。

global.fetch = require('jest-fetch-mock');

组件.ts

const Component = () => {

    useEffect(() => {
      return fetch(
          'url',
        )
          .then(response => response.json())
          .then(json => {
            setApiResult(json);
            setFilterResult(json?.videos);
          })
          .catch(error => {
            console.error(error);
          });
    }, []);

}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何开玩笑地模拟该组件的获取响应。

javascript unit-testing reactjs react-native jest-fetch-mock

11
推荐指数
1
解决办法
1万
查看次数

如何对获取完成后呈现的 React 组件进行单元测试?

我是一个 Jest/React 初学者。在玩笑中,it我需要等到所有承诺都已执行后再实际检查。

我的代码类似于:

export class MyComponent extends Component {
    constructor(props) {
        super(props);
        this.state = { /* Some state */ };
    }

    componentDidMount() {
        fetch(some_url)
            .then(response => response.json())
            .then(json => this.setState(some_state);
    }

    render() {
        // Do some rendering based on the state
    }
}
Run Code Online (Sandbox Code Playgroud)

当组件被挂载时,render()运行两次:一次在构造函数运行之后,一次在fetch()(in componentDidMount()) 完成并且链式承诺完成执行之后)。

我的测试代码类似于:

describe('MyComponent', () => {

    fetchMock.get('*', some_response);

    it('renders something', () => {
        let wrapper = mount(<MyComponent />);
        expect(wrapper.find(...)).to.have.something();
    };
}
Run Code Online (Sandbox Code Playgroud)

无论我从什么返回it,它都会在第一次render()执行之后但在第二次执行之前运行。例如,如果我 return …

reactjs jestjs fetch-api jest-fetch-mock

8
推荐指数
1
解决办法
9843
查看次数

Jest TypeError:不是 Jest.mock 中的构造函数

我正在尝试使用 jest 编写一个单元测试用例,并且需要模拟以下模式。我收到 TypeError: 不是构造函数。

用例:我的用例如下所述

我的组件.js:

 import serviceRegistry from "external/serviceRegistry";


        serviceRegistry.getService("modulename", "servvice").then(
              service => {
                let myServiceInstance = new service();
                myServiceInstance.init(p,d) 
        })
Run Code Online (Sandbox Code Playgroud)

我的组件.spec.js

jest.mock('external/serviceRegistry', () => {
      return {
        getService: jest.fn(() => Promise.resolve({
          service: jest.fn().mockImplementation((properties, data, contribs) => {
            return {
              init: jest.fn(),
              util: jest.fn(),
              aspect: jest.fn()

            };
          })
        }))
      };
    }, {virtual: true});
Run Code Online (Sandbox Code Playgroud)

reactjs jestjs babel-jest jest-fetch-mock

7
推荐指数
1
解决办法
1万
查看次数

带茉莉花的 fetch-mock 然后不触发

我有这个常数:

export const clientData = fetch(`${process.env.SERVER_HOST}clientData.json`)
    .then(response => response.json());
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,现在我正在用 Jasmine 和 fetch-mock 测试这个

这是我的测试:

import { clientData } from '../../../src/js/services/client-data.fetch';
import fetchMock from 'fetch-mock';

describe('test', () => {
    const exampleResponse = {
        clientData: 'test'
    };

    beforeAll(() => {
        fetchMock.mock('*', exampleResponse);
    });

    it('ooo', () => {
        console.log('here', clientData);
        var a = clientData;
        a.then(b=> console.log(b))
    });
});
Run Code Online (Sandbox Code Playgroud)

的 console.logclientData返回一个Promise(这很好),但then永远不会触发。

不明白为什么,我的代码有什么问题?

javascript unit-testing jasmine karma-jasmine jest-fetch-mock

6
推荐指数
1
解决办法
839
查看次数

如何使用 jest 和酶在 react-native 中为 Touchable highlight onpress 功能编写测试用例

所以,这是我的 touchablehighlight 代码,我使用模拟来调用 onpress 函数,但它不起作用任何人都可以帮助我。

 <TouchableHighlight style={styles.touchableButtonview} 
      onPress = {(this.authUser.bind(this))}>
      <Text style={styles.buttonText}>Sign in</Text>
    </TouchableHighlight>
Run Code Online (Sandbox Code Playgroud)

tdd jestjs react-native jest-fetch-mock

6
推荐指数
0
解决办法
371
查看次数

带有 Typescript 的“jest-fetch-mock”:“没有调用签名”和“对象上不存在”错误

jest-fetch-mock 有一个我遵循的 Typescript 设置指南:https ://www.npmjs.com/package/jest-fetch-mock

// package.json
, "devDependencies": {
    "@types/jest": "^24.0.23",
    "jest": "^24.9.0",
    "jest-fetch-mock": "^2.1.2",
    "ts-jest": "^24.2.0",
    "typescript": "^3.7.2"
  },
  "jest": {
    "automock": false,
    "setupFiles": ["./setupJest.ts"]
  }

// setupJest.ts
import {GlobalWithFetchMock} from "jest-fetch-mock";

const customGlobal: GlobalWithFetchMock = global as GlobalWithFetchMock;

customGlobal.fetch = require('jest-fetch-mock');
customGlobal.fetchMock = customGlobal.fetch;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试设置一个虚拟的解析值时:

// ScriptTag.test.ts
  test("", async () => {
    fetch.mockResponseOnce(JSON.stringify(1));
    const data = await fetchMock("x");

    await expect(data.json()).resolves.toStrictEqual(2);
  })

// terminal
 FAIL  functions/src/classes/__tests__/ScriptTag.test.ts
  ? Test suite failed to run

    TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` …
Run Code Online (Sandbox Code Playgroud)

fetch typescript jestjs jest-fetch-mock

6
推荐指数
0
解决办法
697
查看次数

React Native:在 Jest 单元测试中模拟离线设备

我正在编写一个 React Native 应用程序,我正在使用 Jest 对我的代码进行单元测试。

我写了一个函数,而不是检查是否有互联网连接。我知道想写它的单元测试。我被卡住了,因为我不知道如何在单元测试中模拟设备的连接状态。

您将如何在单元测试中模拟设备离线或在线?

编辑:

这是函数:

import { NetInfo } from "react-native";
import { NO_NETWORK_CONNECTION } from "../../../../config/constants/errors";

const checkNetwork = (): Promise<boolean | string> =>
  new Promise((resolve, reject) => {
    NetInfo.isConnected
      .fetch()
      .then(isConnected => (isConnected ? resolve(true) : reject(NO_NETWORK_CONNECTION)))
      .catch(() => reject(NO_NETWORK_CONNECTION));
  });

export default checkNetwork;
Run Code Online (Sandbox Code Playgroud)

我想在我的测试中测试它,看看它是否正确解析为 true 如果设备已连接并拒绝字符串,如果请求失败。为此,我需要在单元测试中模拟设备连接。

connection unit-testing jestjs react-native jest-fetch-mock

5
推荐指数
1
解决办法
2568
查看次数

Jest 期望一个带有函数的对象

我正在编写一个 Jest 测试,其中我调用一个函数并期望返回一个对象,如下所示:

const repository = container => {

  const makeBooking = (user, booking) => {
    'make booking function called'
  }

  const generateTicket = (paid, booking) => {
    console.log('generate ticket function called')
  }

  const getOrderById = orderId => {
    console.log('get order by ID called')
  }

  const disconnect = () => {
    console.log('disconnect method called')
  }

  return {
    makeBooking,
    getOrderById,
    generateTicket,
    disconnect
  }
}

Run Code Online (Sandbox Code Playgroud)

为了举例,所有这些函数现在都是示例。我现在导出函数,然后在测试中使用它,如下所示:

container = {}

describe('Repository', () => {
  it('should connect with a container', () => {
    let …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing node.js jestjs jest-fetch-mock

3
推荐指数
2
解决办法
3632
查看次数

如何对不存在的外部依赖进行玩笑模拟

我正在尝试模拟尚未在 npm 存储库中发布的外部依赖项。

import Utils from 'external-dependency';
jest.mock('external-dependency', () => ({
default: ()=> jest.fn()
}));
Run Code Online (Sandbox Code Playgroud)

上面的笑话模拟显示以下错误,因为该依赖项尚不存在。

找不到模块“外部依赖”

如何在 Jest 中模拟不存在的依赖关系?

unit-testing jestjs jest-fetch-mock

3
推荐指数
1
解决办法
1963
查看次数

jest.mock(..) 在“描述”中不起作用(类型错误:moduleName.split 不是函数)

jest.mock(..)似乎不适用于我的测试的“描述”级别。

如果我有以下内容:

import React from 'react';
import {someFunction} from "./something/someFile";

describe('Overview Test', () => {

    jest.mock(someFunction);

    test(' snapshot', () => {

    });
});
Run Code Online (Sandbox Code Playgroud)

然后运行“测试”(即在测试级别),工作正常。

但是,如果我运行“描述”(即描述级别或套件级别),则会出现以下错误:

TypeError: moduleName.split is not a function

    at Resolver.resolveModuleFromDirIfExists (A:\frontend\node_modules\jest-resolve\build\index.js:224:30)
    at Resolver.resolveModule (A:\frontend\node_modules\jest-resolve\build\index.js:252:12)
Run Code Online (Sandbox Code Playgroud)

如果我有这个:

describe('Overview Test', () => {
    test(' snapshot', () => {
        jest.mock(someFunction);
    });
});
Run Code Online (Sandbox Code Playgroud)

那么这两种方式都不起作用。

我也试过这个:

import React from 'react';
import {someFunction} from "./something/someFile";


describe('Overview Test', () => {

    beforeEach(() => {
        jest.mock(someFunction);
    });

    test(' snapshot', () => {

    }); …
Run Code Online (Sandbox Code Playgroud)

jestjs jest-fetch-mock

2
推荐指数
1
解决办法
4399
查看次数

Jest - 如何模拟网络延迟

我正在尝试在 Jest 中模拟慢速网络(使用 React 测试库)。我试图设置的条件是这样的:

  1. UI 处于特定状态
  2. 异步 AJAX 请求被触发
  3. 用户界面改变状态
  4. 异步请求完成

在我看来,这是一个相当常见的要求,因为使用异步编程,您必须了解 AJAX 请求发送和完成之间可能发生的情况。但是,我根本找不到该领域的任何讨论或工具。

asynchronous jestjs jest-fetch-mock

1
推荐指数
1
解决办法
5886
查看次数