2016-11-29 9 views
2

例として、Make React PropType warnings throw errors with enzyme.js + sinon.js + mocha.jsを使用しました。シントンによる反応型の試験

私は1つの必要な小道具と反応する成分を持っている:

class Pagination extends Component { 
    render() { 
     return (
      ... render some stuff 
     ); 
    } 
} 

Pagination.propTypes = { 
    total: PropTypes.number.isRequired 
}; 

を、これはそれのためのテストです:

describe('(Component) Pagination',() => { 
     before(() => { 
     sinon.stub(console, 'error', (warning) => { throw new Error(warning) }) 
     }) 
     after(() => { console.error.restore() }) 

     it('render fails without props',() => { 
      shallow(<Pagination />); 
     }); 

     it('render fails without props2',() => { 
     shallow(<Pagination />); 
     }); 
    }); 

実行した後にそれが最初のクラッシュをテストしたが、二 - ではありません。テストは似ています。 Reactが警告メッセージを1回だけ投げるというのは問題だと思います。 これを避ける方法は?

2つのテストが必要です:1つは小道具が設定されていないときにクラッシュし、もう1つは小道具でうまく動作します。

Pagination.displayName = Math.random().toString(); 

あなたはそれがあるため、同じ構成要素であることを明らかに正しかった、とあなたは、各テストの前にそれトリックそれを、これを行う場合:

+0

だから、各テストの後にbeforeEach()とafterEach()をクリーンアップしようとしましたか?もしそうなら、それはあなたのために働いたのですか? – PositiveGuy

答えて

1

あなたは回避策hereを見つけることができます。ちょうどハックが、それは動作します。どうやらいい方法はありません。

P.S.私はbeforeEachでそれをして、自分自身でテストごとに書きません。 P.P.S.あなたが同じ名前を得ることができ、それが失敗するか、guidか、それが十分でない場合には何でも使用できるので、randomは最も信頼性がありません。

+0

個人的に私はあなたが前にそのようなものを投げるならば、他の開発者にとってははるかに明白だと思います。 – PositiveGuy

関連する問題