【问题标题】:Warning: Failed propType: Invalid prop `rrrr` supplied to `sportsMockUpStandard`警告:道具类型失败:提供给“sportsMockUpStandard”的道具“rrrr”无效
【发布时间】:2016-03-18 04:25:44
【问题描述】:

https://gist.github.com/js08/dfeab2df8b68240297eb

  • 我正在尝试为 jsx 文件编写测试用例
  • 在此我可以传递 proptypes...
  • 但不是我通过 proptypes 的地方...
  • 我在运行测试用例时遇到错误。
  • 在下面提供我的错误、测试用例和代码...
  • 警告:失败的 propType:无效的 prop rrrr 提供给 sportsMockUpStandard
  • 不知道如何使它工作..
  • 它发生在这个函数调度中..
  • 你能告诉我我应该如何把它放在我的测试用例中

    **error** 
    ---
     1) shallow renderer tests for sports-template-standard  should render correctly:
    

    警告:失败的 propType:无效的 prop rrrr 提供给 sportsMockUpStandard

    test cases
    ---
    
    
    describe('shallow renderer tests for sports-template-standard ', function() {
        let shallowRenderer = TestUtils.createRenderer();
        console.log("shallowRenderer" + JSON.stringify(shallowRenderer));
    
        it('should render correctly', () => {
    
           // var rightPanel ="some string";
            var layout ="some string";        
             var hasSidebar = function(){
                done();
        }
            console.log("here1");
          //  this.props.layout.rightPanel.exists = 'some value';
    
        shallowRenderer.render(<sportsMockUpStandard
    
            sidebar= {[{hasSidebar},{id: 100, text: 'hello world'}]} 
    

    />);

               // shallowRenderer.render(<sportsMockUpStandard
    
                //layout= {{id: 100, text: 'hello world'}}  />); 
    
             console.log("here2");
    
        });
    
    });
    

    ```

【问题讨论】:

  • 您为什么将问题中有关“侧边栏”的错误更改为“rrrr”?它使在更改之前给出的答案看起来好像与问题无关。

标签: javascript jquery html reactjs mocha.js


【解决方案1】:

首先查看您收到的警告:

警告:失败的 propType:无效的 prop rrrr 提供给 sportsMockUpStandard。

这告诉您提供给sportsMockUpStandardrrrr 属性有问题。所以让我们来看看。在sportsMockUpStandard 你有

rrrr: React.PropTypes.oneOfType([
    React.PropTypes.func,
    React.PropTypes.object
]),

所以它期待一个函数或一个对象。但是,在测试用例中,您创建了一个 sportsMockUpStandard 元素,其中 rrrr 是一个数组:

rrrr= {[{rrrr},{id: 100, text: 'hello world'}]}

只要加React.PropTypes.array,你就可以了。

更新: 我真的建议从了解 Mocha 的工作原理开始。您当前的测试不检查任何内容,而是在执行 done() 时完成。当你使用 chai 时,正常的设置是这样的:

describe('the thing you want to test', () => {
  it('should do something', () => {
    /* Run some code */
    expect(/*something*/).to.equal(/*something*/);
  })
})

假设你有一个函数:

function addOne(number){
  return number + 1;
}

那么您的测试将如下所示:

describe('addOne', () => {
  it('should take a number and increment it by one', () => {
    var number = 5;
    var newNumber = addOne(number);
    expect(newNumber).to.equal(6); // Success!!
  })
})

一旦你掌握了基础知识,测试 React 组件应该会容易得多。

【讨论】:

  • @dannyjoile 我在我的测试用例中尝试了几种语法,但它不工作......你能更新我的测试用例的功能......请
  • 再次查看您的代码后,我发现您实际上需要侧边栏作为函数或对象。你为什么将它作为一个数组提供?只需根据您要测试的内容,在测试用例中将sidebar= {[{hasSidebar},{id: 100, text: 'hello world'}]} 更改为sidebar={hasSidebar}sidebar={{id: 100, text: 'hello world}}
  • 而且测试用例中的hasSidebar函数没有意义。它不返回任何东西,只执行一个不存在的函数done()
猜你喜欢
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2018-04-23
  • 2021-01-18
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
相关资源
最近更新 更多