TypeScript で React ベースのコンポーネントを開発するための優れたワークフローを研究しています。
.tsx
1.6 以降、TypeScript は拡張機能を介して TypeScript ファイルの JSX をネイティブにサポートしており、tsd
IDE (atom/WebStorm) で型チェックをサポートできます。
しかし、 で書かれた React コンポーネントをテストする簡単な方法はないようですtsx
。
これについてあなたの洞察を共有できますか?
のランタイム環境にはDOMが付属しているためJest
、純粋ではなく(ほとんど使用する義務があります)を検討しています。ただし、jest は ES2015 からおよびプリセットでのみ動作するようです。で作業するためのすぐに利用できる方法はありますか?Jasmine
Jest
babel
es2015, react
Jest
tsx
現在、ES2015 で記述された React コンポーネントを次のようにテストできます。
// SampleComponent.js
import React from 'react';
class SampleComponent extends React.Component {
constructor(props) {
super(props);
}
render() {
return (<div className='container'>Hello World!</div>);
}
}
module.exports = SampleComponent;
対応するテストは次のようになります。
// __tests__/SampleComponent-test.js
import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';
const SampleComponent = require('../SampleComponent');
describe('SampleComponent', ()=>{
it("has some text", ()=>{
const result = TestUtils.renderIntoDocument(
<SampleComponent />
);
const sampleComponentNode = ReactDOM.findDOMNode(result);
// expect statements
});
});
これは問題なく動作しますが、.js
拡張子を に置き換えて、 を次のよう.tsx
に変更scriptPreprocessor
すると:
'use strict';
var ts = require('typescript');
module.exports = {
process: function(src, path) {
if (path.match(/\.(ts|tsx)$/) && !path.match(/\.d\.ts$/)) {
return ts.transpile(src, {jsx: ts.JsxEmit.React, module: ts.ModuleKind.CommonJS});
}
return src;
},
};
特にTypeScriptがモジュールの読み込みを処理する方法に関しては、すべての地獄が解き放たれます