Почему мой функциональный тест не соответствует моему ручному тестированию?

У меня есть модуль Drupal 8 для запрета пользователей на основе страны .

В нем у меня есть следующий тест.

public function setUp() {
  parent::setUp();
  $this->drupalLogin($this->adminSitesUser);
}
public function testCompleteBan() {
    // node/1.
    $this->addBanNode("Read only page");
    // node/2.
    $this->addBanNode("Complete ban page");
    $this->drupalGet(IP_BAN_ADMIN_FORM_PATH);
    $edit = array(
      // Set the United States to Read Only
      // 0 = no action / 1 = Read Only / 2 = Complete Ban.
      'ip_ban_US' => 2,
      // Set the test IP address to a known Google US address.
      'ip_ban_test_ip' => '66.249.84.22',
      // Configure the paths for read-only and complete ban.
      'ip_ban_readonly_path' => '/node/1',
      'ip_ban_completeban_path' => '/node/2',
    );
    $this->drupalPostForm(IP_BAN_ADMIN_FORM_PATH, $edit, t('Save configuration'));
    $this->assertOptionSelected('edit-ip-ban-us', 2, 'Complete ban set correctly in country list table.');
    // Should be redirected to complete ban page after logout.
    $this->drupalGet('user/logout');
    $this->assertUrl('node/2');
  }

Однако, я получаю сообщение об ошибке в последней строке (assertURL()): «Ожидаемый» http://d8.dev/node/2 'соответствует текущему URL (http://d8.dev/). Значение http://d8.dev/ ' равен значению http://d8.dev/node/2 '. "

Кажется, что страница не перенаправляется при выходе из системы так, как это делается при ручном тестировании с минимально минимальной установкой и с использованием тех же настроек (включая разрешения) /рабочий процесс в качестве тестов.

Обратите внимание, что все тесты на основе форм также работают.

Любая идея, почему это не работает в D8? (Он отлично работает в D7.)

5 голосов | спросил Webdrips 29 +03002016-10-29T04:06:56+03:00312016bEurope/MoscowSat, 29 Oct 2016 04:06:56 +0300 2016, 04:06:56

1 ответ


0

Ошибка утверждения выглядит так, как если бы структура тестирования не выполняла двойной переадресации (из /user/logout в <front> и оттуда до /node/2). Может явным образом запросить первую страницу после выхода из системы?

Т.е.

$this->drupalGet('user/logout');
$this->drupalGet('<front>');
$this->assertUrl('node/2');
ответил Christoph Burschka 4 52016vEurope/Moscow11bEurope/MoscowFri, 04 Nov 2016 15:27:35 +0300 2016, 15:27:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132