CakePHPとSimpleTestの連携で以下のようなソースを書いた。
$data =
array('username' =>
'hogehoge',
'password' =>
'1234567');
$this->
User->
create($data);
$result =
$this->
User->
validates();
$this->
assertFalse($result,
'パスワードが7文字の時はエラーになること');
んで、失敗するテストとして実行したところ、テスト結果のメッセージ(パスワードが7文字・・・)が文字化けするので調べてみたところ、cake\tests\libにあるcake_reporter.phpに問題があることが分かったので今後のためにメモ。
問題となっているのは42行目
function CakeHtmlReporter
($character_set =
'ISO-8859-1') {
if (isset($_GET['show_passes']) &&
$_GET['show_passes']) {
$this->_show_passes =
true;
}
$this->
SimpleReporter();
$this->_character_set =
$character_set;
}
ここで、Html形式でのテスト結果の出力の際に、標準では出力の文字コードがISO-8859-1になっている。
で、呼び出し元のtest_manager.phpの596行目からのCakeTestsGetReporter()関数の中では、呼び出しの際に引数に文字コードを渡していないため、日本語文字列もISO-8859-1で処理しようとしているため、文字化けしている。
ということで解決策はcake_reporter.phpの42行目
function CakeHtmlReporter($character_set = 'ISO-8859-1') {
を
function CakeHtmlReporter($character_set = 'UTF-8') {
に修正すると良い。
“[CakePHP]SimpleTest連携時のメッセージ文字化けを修正する方法”へのコメントはありません。
Posting your comment.
コメントする
Trackback