在Drupal 7中测试多步骤表单

我目前正在使用SimpleTest在Drupal 7中测试复杂的多步骤表单实现。之所以这样做是有意义的,因为其中涉及许多因素,所有这些因素都需要考虑在内并自动在什么页面上显示什么表单元素是最强大的解决方案。为了测试表单的工作方式,我需要一次提交给表单(使用$this->drupalPost()方法),然后使用相同的方法再次提交表单。棘手的一点是,当drupalPost()使用URL调用方法时,它首先drupalGet()在URL上调用,然后才发布到表单中。这基本上意味着表单被启动了两次,并且从未超过第二页。

解决这个问题的方法非常简单,但是我花了一些时间才找到它。本质上,要停止首先drupalPost()运行该方法,drupalGet()只需提供URL参数(第一个参数)drupalPost()为NULL。这将跳过表单的重新加载,并将表单状态回发到表单。这是将测试多步表单的前两个阶段的代码,而其余的DrupalWebTestCase类则省略了。

// 发布到多步骤表单的第一步

$this->drupalPost('first/step/in/multistep/form', array(), 'Next');

 

// 做断言

// 表单元素位于表单的第二页上。

$this->assertFieldByName('form_element', '');

 

// 第二步

$input = array(

  'form_element' => 'form_value',

);

 

$this->drupalPost(NULL, $input, 'Next');

 

// 第二步 assertions

测试表单验证时,也可以使用此方法对表单进行重复提交。

以上是 在Drupal 7中测试多步骤表单 的全部内容, 来源链接: utcz.com/z/311515.html

回到顶部