javascript - TypeError:module.Name.replace 不是函数
问题描述
我是单元测试的新手,我无法为以下内容识别/设置正确的道具:js file REACT / JS jest/enzyme
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>
)
})
}
我做了一些类似的文件,它们看起来都很好并且可以正确传递,但是无法识别和修复以下错误。请看一下 let mockmodules
测试.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
});
})
}
})
解决方案
嗯,这个错误意味着你所指的对象,在这种情况下
module.Name
——没有replace
函数。要问的问题可能会解决您的问题:
- 您要引用的预期模块是什么?尝试做一个
console.log(module.Name)
看看它是否是你所期望的。
如果您尝试使用 JS 的内置字符串替换方法,那么您还需要检查 是否typeof(module.Name)
是字符串。如果是,请按照此处的字符串替换方法的文档:https ://www.w3schools.com/jsref/jsref_replace.asp
如果不是,您可能需要回溯以确保您拥有正确的数据。
假设module.Name
实际上是一个字符串,它的用法如下:
module.Name = module.Name.replace(/ /g, '');
推荐阅读
- heroku - Heroku 部署错误 *heroku open* 命令 Clojure 应用程序
- go - Hyperledger Fabic 2.2.0 处理成功响应时出错。值与架构不匹配
- opengl - 是否可以同时使用索引和法线?
- ruby-on-rails - 为什么这个 Rails 迁移会给出“没有这样的表”错误?
- javascript - 通过 JS 更改 HTML 元素不会立即更新
- javascript - HTML 按钮无响应,控制台未注册事件
- amazon-web-services - 有没有办法按标签获取 AWS 资源使用情况?
- node.js - Loopback v3 将列添加到表中->“'字段列表'中的未知列 'column_name'”
- heroku - 对 Heroku WEB_CONCURRENCY 变量和 Celery --concurrency 之间的区别感到困惑
- lambda - 如何在流 API 中正确使用 .map 和 .orElseGet 的组合?