如何在init函数中测试drupal_goto?

时间:2015-05-13 15:03:09

标签: unit-testing drupal-7 drush

所以有一个像这样的函数:

function mymod_init()
{
    $ip = '123.123.123.123';
    $newPath = mymod_redirect_calculate($ip);
    if (!empty($newPath)) drupal_goto($newPath);
}

这完全打破了单元测试。我对“mymod_redirect_calculate”进行了测试,但是如果我将上面的内容添加到我的init函数中,则测试无法运行。

从我收集的内容中,“exit”和“drupal_goto”打破了单元测试。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

实际上drupal_goto()最终会调用exit()。使用header()应该有效:

function mymod_init() {
  $ip = '123.123.123.123';
  $newPath = mymod_redirect_calculate($ip);
  if (!empty($newPath)) {
    $url = url($newPath, array('absolute' => TRUE));
    header('Location: ' . $url, TRUE);
  }
}