在React JS单元测试期间,Undefined不是构造函数

时间:2016-12-19 01:13:16

标签: javascript reactjs mocha enzyme karma-mocha

我是单元测试,并将简要地布局代码的结构。 1. currency.js在一个对象中有货币,如下所示:

 module.exports = {
    'United States': 'USD',
    'India': 'Rupee',
    'Mexico': 'Peso',
   }
  1. CurrencyField需要currency.js将其打印为选项列表:

    const React = require('react');     const currency = require('somepath / currency');

    const CurrencyField = ({onCurrencyNameSet, currencyName}) => {
        const currencyOptions = ['Select Currency'].concat(Object.values(currency)).map((thiscurrency) =>
            <option key={thiscurrency}>{thiscurrency}</option>
            );
        return (
            <fieldset className="currency-form-group">
                <label className="currency-form-group-label">Country</label>
                <select onChange={onCurrencyNameSet} className="currency-form" value={currencyName}>
                    {currencyOptions}
                </select>
            </fieldset>
        );
    };
    
  2. 然后我有一个PaymentForm.js,它使用货币作为其中一个字段。

  3. 类PaymentForm扩展了React.Component {

    //一些事件。     render(){

      return (
        // many things
        <CurrencyField onCurrencyNameSet={this.onFieldSet('currency')} currencyName={this.state.currencyName} />
        // many other things
      )
    

    } }

    1. 然后我有一个像这样的单元测试框架:

      描述('当渲染货币'时,函数(){         beforeEach(function(){             this.wrapper = Enzyme.mount(React.createElement(PaymentForm,{some params}));         });

    2. 麻烦:undefined不是构造函数(评估'Object.values(currency)')

    3. 有任何想法如何解决此问题?

1 个答案:

答案 0 :(得分:1)

此语法无效:

['Select Currency'].concat(currency).Object.values(currency)

Object.values()是一个独立的函数调用。你不能将它组合在带有点符号的数组中。

你的意思是?

['Select Currency'].concat( Object.values(currency) )