0

複数の値を持つチェック ボックスとテキスト フィールドのセットがいくつかあるフォームがあります。これらの入力は、クエリの作成に使用されます。

<input class="entry" name="search_text" />

<input type="checkbox" name="arrSource[pn_oem]" value="pn_oem" />
<input type="checkbox" name="arrSource[descr]" value="descr" />
<input type="checkbox" name="arrSource[supplier_pn]" value="supplier_pn" />
        <!---  etc  -->

<input type="checkbox" name="arrSupplier[]" value="307" /> Adam
<input type="checkbox" name="arrSupplier[]" value="113" /> Alan
<input type="checkbox" name="arrSupplier[]" value="2" /> Alex
<input type="checkbox" name="arrSupplier[]" value="3" /> Archie
        <!---  etc  -->

<input class="submit" value="Search" type="submit" name="Search" />
<input class="submit" value="Reset" type="submit" name="Reset" />

検索を実行し、結果をデータベース上の独自の SQL と比較することで、フォームをテストしてきました。それは完璧に機能するようです。しかし、私は SimpleTest に同意してもらうことができませんでした (これらのややまばらな指示に従ってください)。フォーム送信は次のようになります。

$this->setField('arrSource[]', array("supplier_pn", "pn_oem")); 
$this->setField('arrSupplier[]', array(15,92));
$this->setField('search_text', "pax");
$this->click('Search');

SimpleTest は 2 の結果を生成しますが、他のメソッドは 9 を返します。いくつかのバリエーションを次に示します。

2 ですが、9 にする必要があります。 setField('arrSource[]', array("supplier_pn", "pn_oem"));

2 ですが、0 にする必要があります。 setField('arrSource[]', array("pn_oem"));

23 ですが、2 にする必要があります。 setField('arrSource[]', array("supplier_pn"));

サプライヤー基準を設定せず、ソース基準を「pn_oem」のみに設定することで、UI に 2 つの結果を表示させることができました。これは、すべてのチェックボックスのチェックを外すことと同じです。なぜなら、pn_oemソースに対して何もチェックされていない場合、クエリは必要であると想定するからです。これが SimpleTest でどのように見えるかを示します -- そして SimpleTest は 2 という結果に同意しました:

$this->setField('arrSource[]', array("pn_oem")); 
$this->setField('search_text', "pax");
$this->click('Search');

チェックボックスが不要であることを SimpleTest に通知しているようです。ただし、この同じフォームで他の複数値チェックボックスのセットを使用して、他のテストを作成しました。彼らにはこの問題はありません。

あなたの考え?

4

0 に答える 0