簡體   English   中英

jest.fn() 被多次調用

[英]jest.fn() is being called multiple times

我正在用笑話和酶測試我的 react-native 應用程序組件。 為了監視作為 props 傳遞的函數,我使用jest.fn() 當我運行測試時,我收到錯誤消息,指出Expected mock function to have been called one time, but it was called two times 測試onPress方法時出現此錯誤。

我嘗試刪除在我的組件中調用 prop 方法的匿名函數; 直接引用組件內部<TouchableOpacity/> onPress方法,而不是從組件的 prop 中調用它; 在測試用例之前重新渲染測試組件。 但沒有成功。

/*BackButton.js*/

import React from 'react';
import { TouchableOpacity } from 'react-native';
import { Icon } from 'expo';
import { iconStyle, Colors } from '../constants';

const styles = {
    icon: {
        marginLeft: 5,
        color: Colors.white,
        fontSize: 40
    }
};

function BackButton(props) {
    return (
        <TouchableOpacity
         onPress={()=>props.navigate()}
         style={{width: 50}}
        >
            <Icon.Ionicons
             name={`${iconStyle}-refresh`}
             style={styles.icon}
            />
        </TouchableOpacity>
    );
 }

 export default BackButton;

=======================================
/*BackButton-test.js*/

import 'react-native';
import React from 'react';
import {mount} from 'enzyme';
import BackButton from '../BackButton';

describe('navigate action', () => {
    const spy = jest.fn();
    const wrapper = mount(<BackButton navigate={spy}/>);

    it('renders correctly', () => {
        expect(wrapper).toMatchSnapshot();
    });

    beforeEach(() => {
       wrapper.prop('navigate')();
    });

    it('calls once', () => {
       expect(spy).toHaveBeenCalledTimes(1);
    });
 });

此外,當我在beforeEach直接調用spy() ,它也被調用了 2 次。

beforeEach()函數中取出wrapper.prop('navigate')

您的beforeEach()正在運行您擁有的it()次數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM