[PHP-users 32427] Re: Simpletest1.0.1betaのassertPatternでの複数行へのマッチ(s修飾子)がうまくいかない
大家正登
masato_oie @ ybb.ne.jp
2007年 7月 11日 (水) 23:36:57 JST
加藤さん
こんにちは。大家です。
>私もassertPatternの第二引数に対象を入力してみたのですが、期待したように「第
>二引数を検索対象」となりませんでした。
>SimpletestのAPIを見てみると
>
>■assertPattern (line 1395)
>Will trigger a pass if the Perl regex pattern is found in the raw content.
> * return: True if pass.
> * access: public
>boolean assertPattern (string $pattern, [string $message = '%s'])
> * string $pattern: Perl regex to look for including the regex
>delimiters.
> * string $message: Message to display.
>
>となっており、単に画面にエラーメッセージを表示するだけでその内容をマッチ対象
>として使うわけではないようなのです。
なるほど。失礼致しました。
assertPattern は 2種類あるようですね。
simpletest/unit_tester.php:
function assertPattern($pattern, $subject, $message = '%s') {
simpletest/web_tester.php:
function assertPattern($pattern, $message = '%s') {
加藤さんがおっしゃられているのは web_tester.php の方ですね。
すみません、私は勘違いして unit_tester.php を見ていました。
また、よく考えてみたら str_replace で生の変数値を変えてしまっては
ちゃんとしたテストとは言えないですよね^^;
ソースをご覧になられているようですので既にお気付きと思いますが、
assertPattern の引数 $pattern は、最終的には exceptions.php の
PatternExpectation クラスの test 関数に行き着くようですね。
この test 関数の中では WebTestCase クラスの
$_browser->getContent() を対象に preg_match を行っているようですね。
ですので結論として、 assertPattern には下記URLの修飾子が使える、
という事、みたいですね。
http://php.mirror.camelnetwork.com/manual/ja/reference.pcre.pattern.modifiers.php
それでは、宜しくお願い致します。
□■□───────────────────→
システムエンジニア
大家正登 (OIE, Masato)
E-Mail: masato_oie @ ybb.ne.jp
←───────────────────■□■
PHP-users メーリングリストの案内