[緑野仙踪のプロデューサーNINJA]TDD(2)
why jest
That said, jest is an excellent unit testing option which provides great TypeScript support.
一般的なフォルダ構造は次のとおりです.
反応型スクリプトプロジェクトにjestを導入
CRA-Typescriptプロジェクトにjestを導入
ここのリンクを参照してください
CRAタイプスクリプトアプリケーション酵素とjest
導入する
CRAを使用してプロジェクトを作成する場合は、すべてのテスト機能を実行できます.CRAにはjestが含まれています.
詳細設定については、次を参照してください.
マイニング設定ファイル
jest configuration
は、package.json
で定義することができる.または、設定は、jest.config.js
jest.config.ts
--config <path/to/file.js|ts|cjs|mjs|json> option
によってプロジェクトに適用される.module.exports = {
preset: 'ts-jest',
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'json'],
//왼쪽에서 오른쪽으로 적힌 순서대로
//Jest가 file extension이 정확한 file extension 없이도 import 를 할 수 잇게 해준다네요?
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// 경로인식
testMatch: [
'<rootDir>/**/*.test.(js|jsx|ts|tsx)',
'<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))',
],
// 매치되는 파일만 테스트
transformIgnorePatterns: ['<rootDir>/node_modules/'],
// 이 문자열과 일치하면 트랜스폼하지않음
};
CRA-Typescriptプロジェクトにjestを導入
ここのリンクを参照してください
CRAタイプスクリプトアプリケーション酵素とjest
導入する
CRAを使用してプロジェクトを作成する場合は、すべてのテスト機能を実行できます.CRAにはjestが含まれています.
詳細設定については、次を参照してください.
マイニング設定ファイル
jest configuration
は、package.json
で定義することができる.または、設定は、jest.config.js
jest.config.ts
--config <path/to/file.js|ts|cjs|mjs|json> option
によってプロジェクトに適用される.module.exports = {
preset: 'ts-jest',
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'json'],
//왼쪽에서 오른쪽으로 적힌 순서대로
//Jest가 file extension이 정확한 file extension 없이도 import 를 할 수 잇게 해준다네요?
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// 경로인식
testMatch: [
'<rootDir>/**/*.test.(js|jsx|ts|tsx)',
'<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))',
],
// 매치되는 파일만 테스트
transformIgnorePatterns: ['<rootDir>/node_modules/'],
// 이 문자열과 일치하면 트랜스폼하지않음
};
preset
:モジュール識別器// jest.config.js
{
"preset": "foo-bar"
}
下図のように.{
"preset": "./node_modules/foo-bar/jest-preset.js"
}
moduleFileExtension
モジュールで使用されるファイル拡張子の配列.ファイル拡張子を指定せずにモジュールが必要な場合、Jestは拡張子を左から右の順に検索します.プロジェクトで最も一般的な展開を左側に配置することをお勧めします.したがって、TypeScriptを使用する場合、「ts」および/または「tsx」を配列の先頭に移動することが考えられる.
transform
対応するファイルを必要なモジュールに接続し、変換します.たとえば、最新のjavascriptコードをbabel-jest
モジュールに送信して変換します.typescript
の場合、ts-jest
を使用して変換されます.{"\\.[jt]sx?$": "babel-jest"}
moduleNameMapper
パス識別器です.パスを登録してください.ここで探します.testMatch
これはテストファイルを探す方法です.文字列|正規表現に一致するファイルのみをテストします.transformIgnorePatterns
この属性値(文字列)が一致する場合は、変換は行われません.Babelインストール(選択)-最新の構文を使用する必要がある場合
過去に導入のような文法はなかったので追加しました.
yarn add --dev babel-jest @babel/core @babel/preset-env
// babel.config.js
module.exports = {
presets: [
[
'@babel/preset-env',
],
],
};
// jest.config.js
transform: {
'^.+\\.(js|jsx)?$': 'babel-jest'
},
絶対パスアイテムの場合
// craco.config.js
jest: {
configure: {
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
},
},
次の行を追加すると、jest
機能を実行するときに絶対パスを認識できます.cracoプロファイルを使用して、実行時にWebパッケージにコンテンツを追加できます.エラー
describe('snapshot', () => {
const utils = render(<FactoryDetailPage />);
expect(utils.container).toMatchSnapshot();
});
入力:エラー
よく見ると文法が違う.
describe('snapshot', () => {
it('snapshot', () => {
const utils = render(<FactoryDetailPage />);
expect(utils.container).toMatchSnapshot();
});
});
入力:良い表現が見られます.文法の間違いに加えて、間違いが発生することもあります.
Jest Test Sweetには、1つ以上のテストが含まれている必要があります.
次のコメントを見てください
ts-jest
ただし、Babel付きTypeScriptを使用する場合、注意すべき点はいくつかあります.BaelではTypeScriptサポートは変換ファイルであるため、Jestは実行時にテストのタイプチェックを行わない.type-checkが必要な場合はts-jestを使用します.
次のコードをテスト
// DeleteButton.test.tsx
describe('snapshot', () => {
it('snapshot', () => {
const utils = render(<DeleteButton hi="hi" />);
// DeleteButton의 인자는 width:string, height:string이다.
expect(utils.container).toMatchSnapshot();
});
});
コンパイル側でエラーが発生しますが、タイプチェックが行われていないため、テストに成功しました.
(こんな風に通れないんですよね…)
テスト側は
ts-jest
を使用してタイプチェックを行います.ts-jest
インストール.npm install ts-jest
jest.config.js
ファイルの作成npx ts-jest config:init
// jest.config.js
module.exports = {
preset: 'ts-jest',
moduleFileExtensions: ['js', 'json', 'jsx', 'ts', 'tsx', 'json'],
//왼쪽에서 오른쪽으로 적힌 순서대로
//Jest가 file extension이 정확한 file extension 없이도 import 를 할 수 잇게 해준다네요?
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1',
},
// 경로인식
testMatch: [
'<rootDir>/**/*.test.(js|jsx|ts|tsx)',
'<rootDir>/(tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx))',
],
// 매치되는 파일만 테스트
transformIgnorePatterns: ['<rootDir>/node_modules/'],
// 이 문자열과 일치하면 트랜스폼하지않음
};
preset
実行タイプスクリプトタイプチェック.(テストチームで)Reference
why jest
jest docs
少なくとも1つのテストを含める必要があります
CRA jest
CRAタイプスクリプトアプリケーション酵素とjest
Reference
この問題について([緑野仙踪のプロデューサーNINJA]TDD(2)), 我々は、より多くの情報をここで見つけました https://velog.io/@rat8397/오즈의-제작소-NINJA-TDD2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol