複数の値を持つチェック ボックスとテキスト フィールドのセットがいくつかあるフォームがあります。これらの入力は、クエリの作成に使用されます。
<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 に通知しているようです。ただし、この同じフォームで他の複数値チェックボックスのセットを使用して、他のテストを作成しました。彼らにはこの問題はありません。
あなたの考え?