2014年3月18日火曜日

[Ruby] Cucumberで日本語テスト定義がエラーになる時の対処

最近初めてCucumberを導入したんですが、日本語でテストケースやステップ定義をする際に日本語をうまく認識できずエラーが出たので、それに対する対処と、若干のTipsをメモしておきます。

最初はネットにあるCucumberのサンプル通りfeacureファイルと対応するstep定義ファイルを記述して実行しました(この時は日本語なし)。これはうまくいきました。今度は、記述を日本語に変更して実行。ところがエラー。下記のように対処しました。

featureファイル


最初に出たのはこんなエラーでした。

Lexing error on line 1


調べてみると、そもそも全く文法を識別できない時のエラーだとか。そんなバカな。しかしどうやら原因は、日本語を使っていると認識できていないようでした。調べた結果、1行目に下記のようにコメントを入れることで日本語を使っていると認識でき、このエラーは出なくなりました。

#language:ja


step定義ファイル


ところが上記エラーを修正すると、今度はこんなエラーが出ます。

invalid multibyte char (US-ASCII)


勘弁してくれ。ただ、今度はエラーメッセージから明らかに文字コード認識の問題だと分かります。調べた結果、step定義ファイルも1行目に下記のようにコメントを入れないと、正しく文字コードを判別できないようです。(先ほどとは違うコメントなので注意。)

#encoding:utf-8


これらの記述をすることで、日本語で記述したテストが実行できるようになりました。

2014/03/20追記:step定義ファイルの文字コード認識の問題は、Ruby1.9系が上で書いたようなコメントを入れないとエンコーディングを正しく認識できないことが原因みたいなので、Ruby2.0以上をお使いの場合は不要かもしれません。

※この記事について指摘・意見・提案・感想などありましたら下のコメント欄にどうそ。

0 件のコメント:

コメントを投稿