ぼっち勉強会スマートフォン用の表示で見るぼっち勉強会この広告は、90日以上更新していないブログに表示しています。Jasmineでパラメタライズドテストするためのプラグインを作ったJavascriptjasmine-parameterizeというのを作りました。「パラメータだけ違って他が同じ」ようなテストを簡潔に書きたい場合があります。これを実現するために「パラメータ」と「テスト本文」を切り分けるように書く仕組みがパラメタライズドテストってやつだと思っているんですが、この辺の理解は自信ないです。このパラメタライズドテストを行うための機構がJasmineにはなくて、プラグインも良さそうなのを見つけられなかったので自分で作りました。(ちなみにQUnitにはプラグインあります)簡単なfizzbuzzテストを例に取ります。テストの書き方が主目的なのでfizzbuzzとは何かには触れません。標準のJasmineだけで愚直に書くとこうなります。});});これでもいいのですが、次のような点が気になります。各expectでどこが違うのかパッと見て分かりにくい頑張ってexpect増やしても結果のexamplesは1つのままで寂しいこれを解消するために以下サイトでは次のような方法が書かれています。Javascript「自分でパラメータ一覧をぐるぐる回してitを呼ぶぜ!」これに従い上記テストを書き換えるとこうなります。});});細かい書き方は色々変えられますが、次のような問題があります。foreach~functionを毎回書くのがダルいexample名が同じで判別が付かない動的に名前を作ればいいんですけどタルい。JSは文字列中の変数展開できないし配列だと要素がparam[0]とかになって何を指しているのか分からないオブジェクトでkeyアクセスにすれば明示的になるが、代わりに汚さを増すit()内で一時変数に置いても同様ということで、この辺を包み込んで書けるようにしたのをプラグインとしました。インストールjasmine-parameterize.jsを落としてきて読み込んでください。npmでインストールとかナウいことはできません。使用例cases()にパラメータの配列を渡します。この関数はオブジェクトを返し、それを通してit()を呼びます。この時it()のfunctionに各パラメータが引数として渡されます。});});もしパラメータが1つしかなければ一次元配列でも構いません。});});おわりにパラメタライズの仕組みは言語/ライブラリによっては、テスト本体と離れていて逆に読みにくいと感じることがあります。Jasmineではテスト本体と近い位置に書けるのでいいんじゃないかなと思います。Jasmineでパラメタライズドテストするためのプラグインを作ったTweet広告を非表示にする関連記事2018-12-19PHPのテストで本当にdataProviderを使う必要があるのだろうかPHPUnitにはdataProviderという機能がある。(1)はてなブログをはじめよう!kanno_kannoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。