質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1156閲覧

jestのテストで三項演算子により表示される文言をテストしたい。

uniuonbiz

総合スコア4

Jest

Jestは、JavaScriptのテストフレームワークです。設定が不要で、高速且つ安全にテストを開始できます。コードカバレッジを生成できる他、テストスコープ外のオブジェクトを容易にモック化できるなど、豊富な機能によりテストの導入を簡単にします。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2023/01/30 05:02

前提

とあるページにて三項演算子により表示される文言が違うのですが、jestでそのチェックを行いたいです。

実現したいこと

  • jestでどちらかの文言が表示されていることを担保したい。

該当のソースコード

sample.tsx export const Sample = () => { const sample = { text:"サンプルテキスト01" } return ( <div> {sample.text ? <div> {sample.text} </div> : <div> "サンプルテキスト02" </div> } </div> ); };
sample.test.tsx import { Sample } from 'src/sample'; describe('Sample', () => { test('画面が表示されることを確認', () => { const { getByText } = render(<Sample />); }); });

試したこと

マッチャー等を調べてみたが、今回のパターンのような使い方が見つからなかった。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

マッチャー等を調べてみたが、今回のパターンのような使い方が見つからなかった。

toMatchで正規表現にマッチさせる、あるいは条件式までは自分で書いてそれを「trueかどうか」だけjestに検証させる、というような手段も考えられます。

投稿2023/01/30 05:23

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uniuonbiz

2023/01/30 05:37

有難うございますmm jestの知識が乏しく申し訳ないのですが、 今回の場合だとexpectへの引数はどこになるのでしょうか? また、三項演算子でsample.textに値があるかどうかを確かめているのですが、 無かった場合はパス出来るのでしょうか?
maisumakun

2023/01/30 05:54 編集

> また、三項演算子でsample.textに値があるかどうかを確かめているのですが、 無かった場合はパス出来るのでしょうか? こちらはjestとは別件の話ではないでしょうか?(表示されるコードを検証したい、というだけなら、中身で三項演算子を使っていようがいまいが、何も関係ないと思うのですが、違うのですか?)
uniuonbiz

2023/01/30 06:03

すみません。 >表示されるコードを検証したい こちらの認識で大丈夫です。 ただ僕の知識ではtoMatchでどう書けば「表示されるコードを検証」出来るのか分からず...。 よろしければ具体的なコード等を提示していただくことは可能でしょうか?
maisumakun

2023/01/30 06:06

expect(表示された文字列).toMatch(/文字列1|文字列2/) …この程度で大丈夫ですか?
uniuonbiz

2023/01/30 06:14

有難うございます。 今回ですと下記のようなコードになるでしょうか? expect('サンプルテキスト01' || 'サンプルテキスト02').toMatch(/サンプルテキスト01|サンプルテキスト02/)
maisumakun

2023/01/30 06:16

そのコードは、何をテストしたいのでしょうか? 画面から取得した値を使わずリテラルで書くのでは、JavaScript環境のテストにしかならないです。
uniuonbiz

2023/01/30 06:23

すみいません。 expectに何を渡せばいいか分からず...。 sample.tsxで表示するテキストを一度関数に入れる必要があるということでしょうか?
maisumakun

2023/01/30 06:46

> expectに何を渡せばいいか分からず...。 すでに「画面から取得した値」「表示された文字列」と書いています。 > sample.tsxで表示するテキストを一度関数に入れる必要があるということでしょうか? 何を疑問視しているのかが読み取れません。
uniuonbiz

2023/01/30 08:45

いただいたご意見で解決いたしました。 有難うございましたmm
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問