[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 メーリングリストの案内