我是单元测试,并将简要地布局代码的结构。 1. currency.js在一个对象中有货币,如下所示:
module.exports = {
'United States': 'USD',
'India': 'Rupee',
'Mexico': 'Peso',
}
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>
);
};
然后我有一个PaymentForm.js,它使用货币作为其中一个字段。
类PaymentForm扩展了React.Component {
//一些事件。 render(){
return (
// many things
<CurrencyField onCurrencyNameSet={this.onFieldSet('currency')} currencyName={this.state.currencyName} />
// many other things
)
} }
然后我有一个像这样的单元测试框架:
描述('当渲染货币'时,函数(){ beforeEach(function(){ this.wrapper = Enzyme.mount(React.createElement(PaymentForm,{some params})); });
麻烦:undefined不是构造函数(评估'Object.values(currency)')
有任何想法如何解决此问题?
答案 0 :(得分:1)
此语法无效:
['Select Currency'].concat(currency).Object.values(currency)
Object.values()是一个独立的函数调用。你不能将它组合在带有点符号的数组中。
你的意思是?
['Select Currency'].concat( Object.values(currency) )