Open2
Jestの %s などのプレースホルダーについて整理📝

Jest でよく見る %s
は、テスト名(あるいはテストの説明文)などに変数を埋め込むときに使う「文字列用プレースホルダ」です。
テストごとに変数の値を動的に名称へ差し込むことができるので、test.each
や describe.each
などのパラメータ付きテストを書くときによく利用されます。
%s
の主な用途
1. テスト名への動的な文字列埋め込み
test.each([
['foo', 123],
['bar', 456],
])('文字列 %s を使って値をテストする(値:%i)', (str, num) => {
// テストの実装
expect(typeof str).toBe('string');
expect(typeof num).toBe('number');
});
上記の例では、
-
%s
は文字列 ('foo'
,'bar'
) が埋め込まれる -
%i
は整数が埋め込まれる
という形式です。テストが実行されると、実際には以下のような名前でテストが実行・表示されます。 -
文字列 foo を使って値をテストする(値:123)
-
文字列 bar を使って値をテストする(値:456)
注意点
-
%s
は 文字列 用のプレースホルダです。数値やオブジェクトを出力したい場合は、%d
(または%i
)や%j
など他の指定子を使う場合があります(後述)。 - Jest のバージョンや Node.js のバージョンによってサポートしているプレースホルダの種類に若干の違いがある場合がありますが、基本的に Node.js の
util.format
系のフォーマット指定子に準拠しています。
2. 似た用途・類似のフォーマット指定子
指定子 | 意味 | 備考 |
---|---|---|
%s |
文字列 (string) | |
%d , %i
|
整数 (integer) | JavaScript では厳密には数値型 (number) を指す。%d も %i も同様 |
%f |
浮動小数点数 (float) | JavaScript では同じく数値型 (number) |
%j |
JSON 形式 (JSON) | オブジェクトなどを JSON 文字列に変換して出力 |
%o |
オブジェクト (object) | 簡易的なオブジェクトの表示 |
%O |
オブジェクト (object) | より詳細なオブジェクトの表示 |
%p |
Pretty-print (Jest独自) | Jest がオブジェクトをきれいに表示するときに使うことがある |
※ これらの指定子は Jest 独自というよりは、Node.js やその周辺の util.format
系機能を踏襲している部分が大きいです。
3. Jest 特有の活用例
-
test.each
/describe.each
のパラメータ化されたテスト名で使用
テストが複数パターンにわたる場合に、テスト内容をわかりやすく出力するために用いられます。 -
console.log
などでも利用可能
Node.js のconsole.log('値: %s', value);
でも同様に文字列埋め込みできます。
比較・まとめ
- Jest の
%s
は 文字列用 のプレースホルダ。 - テストケースの名前や説明に、引数として渡した値を文字列として組み込むために使われる。
- Node.js の
util.format
で使われるフォーマット指定子の一種なので、Jest 以外でも同様の構文が存在する。 -
%s
の他、%i
(または%d
)や%j
などの指定子がある。

情報整理テーブル
用途・名称 | 概要 | 例(パラメータ化テスト) | 備考 |
---|---|---|---|
%s (文字列) |
文字列を動的に埋め込み | test('string is %s', (str) => {...}) |
Jest 以外にも Node.js の console.log 等で利用可 |
%i / %d (整数) |
数値(整数)を動的に埋め込み | test('number is %i', (num) => {...}) |
JavaScript では厳密には「数値型」なので実際には小数でも可 |
%f (浮動小数点数) |
数値(浮動小数点数)を動的に埋め込み | test('float is %f', (floatNum) => {...}) |
こちらも JS 内部では同じ数値型。ただし表記上は小数点を意識したい場合に使用 |
%j (JSON) |
JSON 文字列として埋め込み | test('obj is %j', (obj) => {...}) |
オブジェクトを JSON 文字列に変換して出力 |
%o / %O (オブジェクト) |
オブジェクトの簡易 / 詳細表示 | test('object is %o', (obj) => {...}) |
オブジェクトの構造を出力してデバッグしたいときに使用 |
%p (pretty-print) |
オブジェクトをきれいに表示(Jest 独自拡張) | - | Jest がテスト結果などを見やすく出力するための指定子 |
ログインするとコメントできます