unit-testing - 类型错误 : Utils is not a constructor

标签 unit-testing jestjs datetimepicker date-fns muipickersutilsprovider

我正在使用MuiPickersUtilsProvider来自@material-ui/pickers@ v-3.2.10

并使用类似以下内容:

import DateFnsUtils from '@date-io/date-fns'
import { DateTimePicker, MuiPickersUtilsProvider } from '@material-ui/pickers'

<MuiPickersUtilsProvider utils={DateFnsUtils}>
                <DateTimePicker .../>
</MuiPickersUtilsProvider>

它适用于 UI,但在运行测试用例时会抛出如下错误:

TypeError: Utils is not a constructor

但是一旦我使用import * as DateFnsUtils from '@date-io/date-fns'我们的测试用例有效,但 UI 上出现同样的错误,

当我使用import {default as DateFnsUtils} from '@date-io/date-fns'时我们的测试用例有效,但两个地方(UI 和测试用例)都出现相同的错误

我在下面的链接中找到了类似的讨论,但没有帮助

material-ui-pickers/issues/805

// setup file
var enzyme = require('enzyme');
var Adapter = require('enzyme-adapter-react-16');
require('jest-canvas-mock')
enzyme.configure({ adapter: new Adapter() });

crypto = require('@trust/webcrypto')

// fetch undefined
const fetchPolifill = require('whatwg-fetch')
global.fetch = fetchPolifill.fetch
global.Request = fetchPolifill.Request
global.Headers = fetchPolifill.Headers
global.Response = fetchPolifill.Response

function noOp () { }
if (typeof window.URL.createObjectURL === 'undefined') {
  Object.defineProperty(window.URL, 'createObjectURL', { value: noOp})
}

最佳答案

我遇到了同样的问题,我通过以下代码解决了,

"<MuiPickersUtilsProvider utils={DateFnsUtils}>"


import React, { useState } from 'react'
import DateFnsUtils from '@date-io/date-fns';
import { MuiPickersUtilsProvider, KeyboardDatePicker } from '@material-ui/pickers';

const ProblemStatement = () => {
 const [selectedDate, setSelectedDate] = useState(new Date('2014-08-18T21:11:54'))
    const handleDateChange = (date) => {
        setSelectedDate(date)
    }
    return (
        <div>
            ProblemStatement
            <h2>datepicker</h2>
            //this one
            <MuiPickersUtilsProvider utils={DateFnsUtils}>
                <KeyboardDatePicker
                    margin="normal"
                    id="date-picker-dialog"
                    label="Date picker dialog"
                    format="MM/dd/yyyy"
                    value={selectedDate}
                    onChange={handleDateChange}
                    KeyboardButtonProps={{
                        'aria-label': 'change date',
                    }}
                />
            </MuiPickersUtilsProvider>


        </div>
    )
}

关于unit-testing - 类型错误 : Utils is not a constructor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63810805/

相关文章:

unit-testing - 如何从我的单元测试中触发 Quartz Cronjob

javascript - wrapper.instance() 上的 react 测试失败

typescript - 如何在 Jest 中模拟一个函数

javascript - DateTimePicker 类预约系统

angularjs - 如何为 Angular js 应用程序添加 "datetime"选择器?

json - 单元测试时出错 : "Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1"

android - 如何确保在 Android 单元测试中调用 ViewModel#onCleared?

node.js - jest.js 无法识别编码

javascript - 如何在事件上对 jquery 进行指令更新 ng-model?

ios - 单元测试未在 IOS swift 5 上运行