[解決済み] JestとReactのテストライブラリでclassNameをテストする方法
質問
私はJavaScriptのテストは全く初めてで、新しいコードベースで作業しています。私は、要素上のclassNameをチェックするテストを書きたいと思っています。私はJestで作業しています。
Reactテストライブラリ
. 以下は、ボタンをレンダリングするテストです。
variant
プロパティを使用します。また、classNameも含まれているので、それをテストしたいと思います。
it('Renders with a className equal to the variant', () => {
const { container } = render(<Button variant="default" />)
expect(container.firstChild) // Check for className here
})
Enzymeが持っているようなプロパティをググってみると
hasClass
しかし、何も見つかりませんでした。現在のライブラリでこれを解決するにはどうしたらよいでしょうか (
React テスティングライブラリ
とJest)を使用することはできますか?
どのように解決するのですか?
react-testing-libraryを使えば、簡単にできますよ。
まず最初に、以下のことを理解する必要があります。
container
の結果、または
getByText
などは単なるDOMノードです。ブラウザで行うのと同じように、それらと対話することができます。
では、どのようなクラスが
container.firstChild
は、次のようにすればよいのです。
container.firstChild.className
.
について詳しく読むと
className
で
MDN
を返していることがわかると思います。
すべて
は、スペースで区切られた要素に適用されるクラス、つまり、です。
<div class="foo"> => className === 'foo'
<div class="foo bar"> => className === 'foo bar'
これは、あなたのケースによっては、最適な解決策ではないかもしれません。別のブラウザAPIを使用することもできます。
classList
.
expect(container.firstChild.classList.contains('foo')).toBe(true)
これだけです! テストにしか使えない新しいAPIを覚える必要はありません。ブラウザと同じように使えます。
クラスのチェックを頻繁に行うのであれば、テストを簡単にするために ジェストドム をプロジェクトに追加してください。
すると、テストはこうなる。
expect(container.firstChild).toHaveClass('foo')
のような便利なメソッドが他にもたくさんあります。
toHaveStyle
を使用すると便利です。
余談ですが、react-testing-libraryはちゃんとしたJavaScriptのテストユーティリティです。他のライブラリよりも多くの利点があります。ぜひ スペクトラムフォーラム JavaScriptのテストが初めてなら
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】リソースはドキュメントと解釈されるが、MIMEタイプはapplication/zipで転送される
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] Jestを使用して単一のテストを実行するにはどうすればよいですか?
-
[解決済み] React NativeとReactの違いは何ですか?
-
[解決済み】Jestでスローされた例外の型をテストする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】JavaScriptで相対URLへのリダイレクトを行う
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】HTMLの最初の行に予期しないトークン<がある。
-
[解決済み】 \u003C とは何ですか?
-
[解決済み】中央値の計算 - javascript