私は現在、reactjsアプリケーションのために書かれた単体テストのデコレータに関する問題に取り組んでいます。テスト専用のデコレータを無視する方法はありますか?
私たちの反応コンポーネントにデコレータを導入することで、あまりにも多くの定型化を避ける方法が大好きです。コンポーネントはきれいに見え、コードはこれで読みやすくなります。 しかし、私はアプリケーションの文脈で必須のテストである単体テストを実行することができないので、今このナンセンスデコレータをあまりにも多く刺激しました。下記のコード:
@translate(['common'])
export default class MyComponent extends React.Component {
...
componentDidMount() {
// Ajax call on success setting the state this.setState({ myData: response.data })
}
...
}
このコンポーネントの状態をテストしたいと、私はajaxの成功の応答から受け取りました。
私のテストは、私は私のコンポーネントから@translateを([「普通」])を削除した場合、テストの上
describe('<MyComponent />', function() {
sinon.stub(dataService, 'fetchData')
callsFake(function() {
return Promise.resolve(['one', 'two', 'three'])
});
it('should match the state with data fetched', function() {
const wrapper = mount(<MyComponent />);
return dataService.fetchData()
.then(function() {
expect(wrapper.state('myData')).to.have.lengthOf(3);
});
});
});
がうまく機能し、以下のように見えますが、存在する場合は動作しません。 私はtranslateがHOCであることを知っています。私はそれに応じてテストを調整する必要がありますが、私はすべてを試したと信じて、何も私のために働く。 また、コンポーネント1で複数のエクスポートを追加して純粋でもう1つは翻訳でラップすることで、これを実現する方法もありますが、このソリューションでも私のソースコードにあるようなデコレータを削除する必要があります。
テストを実行しているときにソースコードからこれらのデコレータを無視またはスキップするようにウェブパックを設定する方法はありますか?
デコレータはES7の一部ではありません。 –