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如果未选中 Source,则该查询假定是需要的。这是在 SimpleTest 中的样子——SimpleTest 同意 2 的结果:

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

看来我是在向 SimpleTest 发出我不想要任何复选框的信号。但是,我在同一表单上使用其他多值复选框集构建了其他测试。他们没有这个问题。

你的意见?

4

0 回答 0