Unit testing 如何在init函数中测试drupal_goto?

Unit testing 如何在init函数中测试drupal_goto?,unit-testing,drupal-7,drush,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函数中(如图所示),测试将无法运行 从

因此,有一个函数可以执行如下操作:

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破坏了单元测试

我该怎么解决这个问题呢?

事实上,drupal_goto最后会打电话给exit。使用标题应该可以:

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);
  }
}