我是单元测试的新手,我无法为以下项目识别/设置正确的道具: js文件REACT / JS开玩笑/酶
populateModuleDropdown = (moduleList) => {
let modules = moduleList.map(module => {
return (
<DropdownItem key={module.ModuleId} onClick={() => {
this.props.setTarget(null);
}}>
<Link className='full-link'
onClick={e => {if(this.props.module.moduleId === module.ModuleId){e.preventDefault()}}}
to={'/'+module.Name.replace(/ /g,'')}>
{module.Name}
</Link>
</DropdownItem>
)
})
}
我已经做了一些类似的文件,它们看起来都不错,并且可以正常传递,但是无法识别并修复以下错误。请看看 让模拟模块
Test.js
configure({adapter: new Adapter()});
describe(' testing ', () => {
let tree;
let baseProps;
let mockdefaultData;
let mockmodule = {
Name:"test",
moduleId:{},
beforeEach(() => {
module : mockmodule,
it (' Should render without a Module props',() => {
baseProps = {
...baseProps,
module: {},
};
// code
});
it(' Should render with ALL of the props', () => {
//code
});
})
}
})
答案 0 :(得分:0)
好吧,此错误表示您要引用的对象,在这种情况下
module.Name
-没有replace
函数。要提出的问题可能会解决您的问题:
console.log(module.Name)
来查看它是否符合您的期望。如果您尝试使用JS的内置String替换方法,那么您还需要检查typeof(module.Name)
是否为String。如果是这样,请按照此处的String replace方法文档进行操作:https://www.w3schools.com/jsref/jsref_replace.asp
如果没有,您可能需要回溯以确保您拥有正确的数据。
假设module.Name
实际上是一个字符串,则其用法如下:
module.Name = module.Name.replace(/ /g, '');