javascript - Jest 快照测试 - 在 componentDidMount() 中创建新对象时发生错误

标签 javascript reactjs testing jestjs snapshot

我有一个组件,其根 DOM 元素是 <canvas> .我使用 componentDidMount() 方法在 Canvas 上绘制图像;但是,我使用的是第 3 方库,当测试尝试创建从该库派生的新对象时,我在测试期间收到以下错误:

TypeError: QR is not a constructor

QR是用于从中实例化对象的类的名称。这是我的组件(请注意,在运行应用程序时,没有关于 QR 对象的错误,它只在测试期间发生)。

QRCode.js:

import React, { Component } from 'react';
import * as QR from 'qrious';

export class QRCode extends Component {

    render(){
        return (
            <canvas className='QRCode'>
            </canvas>
        );
    };

    componentDidMount() {
        this.drawQRCode();
    }

    drawQRCode() {
        ...
        // the error is occuring here
        let qr = new QR({
            element: canvas,
            value: 'http://example.com/',
            size: canvasSize,
            level: 'H',
            foreground: '#2B2F2B'
        });
        ...
    }

}

QRCode.test.js:

import { QRCode } from './QRCode';
import renderer from 'react-test-renderer';

describe('QRCode', () => {

    it('renders correctly (snapshot test)', () => {
        const tree = renderer
            .create(<QRCode />)
            .toJSON();

        expect(tree).toMatchSnapshot();
    });

});

我尝试添加 import * as QR from 'qrious';QRCode.test.js 文件的顶部,但没有任何区别。

最佳答案

import * as QR from 'qrious' 替换为 import QR from 'qrious'

编辑:

由于 qrious 没有默认导出,应更改为:

从'qrious'导入{QRious}

从'qrious'导入{QRious as QR}

关于javascript - Jest 快照测试 - 在 componentDidMount() 中创建新对象时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48985926/

相关文章:

php - javascript setTimeOut - 不在嵌套的 setTimeout 上运行

java - 测试方法

java - 如何为此方法创建单元测试?

testing - 功能测试cocos2d应用

javascript - 即使未经验证,表单也始终会提交

javascript - OnClick 样式更改

javascript - 这是什么javascript语法? !功能(){}

javascript - 在 React 类组件中使用 Mobx Store 的值?

css - 使用 css class 在布局中放置 react 组件

javascript - 如何从本地目录加载图像并在reactjs应用程序中显示它们?