TypeError:module.Name.replace不是一个函数

时间:2019-01-28 20:35:52

标签: javascript reactjs unit-testing

我是单元测试的新手,我无法为以下项目识别/设置正确的道具:       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

      });
    })
  }
})

1 个答案:

答案 0 :(得分:0)

好吧,此错误表示您要引用的对象,在这种情况下 module.Name-没有replace函数。要提出的问题可能会解决您的问题:

  1. 您要引用的目标模块是什么? 尝试执行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, '');