gpt4 book ai didi

php - 使用 PhpBrowser 的 Codeception 似乎不遵循重定向

转载 作者:可可西里 更新时间:2023-11-01 13:24:27 27 4
gpt4 key购买 nike

这是我第一次设置测试套件,所以我可能会犯一些愚蠢的错误。

我刚刚设置了 Codeception 来为 CodeIgniter 项目编写一些测试。我有一些简单的测试工作(耶!)但我现在正在编写验收测试以确保我的登录表单工作。填写表格并单击提交工作正常,但是当我在提交后尝试检查页面时,似乎没有遵循重定向。

  • 页面内容为空(节点列表为空,日志文件为0字节)
  • 页面的 url 是我提交的页面,而不是我应该重定向到的页面。

重定向是 301 header 重定向。 编辑:FALSE 事实证明,我使用的身份验证库执行“重新加载” header 重定向。使用真正的 301 可以解决问题。

我假设应该遵循重定向。是否需要设置/配置某些内容才能使 301 重定向正常工作?

代码:

我的验收测试:

<?php
$I = new WebGuy($scenario);
$I->wantTo('Login');
$I->amOnPage('/');
$I->fillField('identity', 'manager@example.com');
$I->fillField('password', 'password');
$I->click('submit');
$I->see('Logged In Successfully');

我在 Debug模式下运行测试时的输出。 InvalidArgumentException 错误被抛出,因为它正在查看的页面的 DOM 是空的:

Codeception PHP Testing Framework v1.7.1
Powered by PHPUnit 3.7.27 by Sebastian Bergmann.

Acceptance Tests (1) -----------------------
Trying to login (LoginCept.php)
Scenario:
* I am on page "/"
* I fill field "identity","manager@example.com"
* I fill field "password","password"
* I click "submit"
* I see "Logged In Successfully"
ERROR

---------------------------------------------


Time: 3.96 seconds, Memory: 9.75Mb

There was 1 error:

---------
1) Failed to login in LoginCept.php
Sorry, I couldn't see "Logged In Successfully":
InvalidArgumentException: The current node list is empty.

Scenario Steps:
5. I see "Logged In Successfully"
4. I click "submit"
3. I fill field "password","password"
2. I fill field "identity","manager@example.com"
1. I am on page "/"


[InvalidArgumentException]

#1 phar:///Users/captbaritone/Projects/codeception/codecept.phar/vendor/symfony/dom-crawler/Symfony/Component/DomCrawler/Crawler.php:494
#2 phar:///Users/captbaritone/Projects/codeception/codecept.phar/vendor/behat/mink-browserkit-driver/src/Behat/Mink/Driver/BrowserKitDriver.php:348
#3 phar:///Users/captbaritone/Projects/codeception/codecept.phar/vendor/behat/mink/src/Behat/Mink/Element/Element.php:101
#4 phar:///Users/captbaritone/Projects/codeception/codecept.phar/src/Codeception/Util/Mink.php:208
#5 phar:///Users/captbaritone/Projects/codeception/codecept.phar/src/Codeception/Util/Mink.php:181
#6 phar:///Users/captbaritone/Projects/codeception/codecept.phar/src/Codeception/Step.php:133
#7 phar:///Users/captbaritone/Projects/codeception/codecept.phar/src/Codeception/TestCase.php:31
#8 phar:///Users/captbaritone/Projects/codeception/codecept.phar/src/Codeception/Scenario.php:87
#9 /Users/captbaritone/Projects/codeception/tests/acceptance/WebGuy.php:571
#10 /Users/captbaritone/Projects/codeception/tests/acceptance/LoginCept.php:8

FAILURES!
Tests: 1, Assertions: 0, Errors: 1.

最佳答案

原来这是由于 Ion Auth 造成的使用“重新加载” header 而不是“位置” header 进行重定向。由于某种原因,Codeception(或者可能是底层的 PhpBrowser)不遵守这种形式的重定向。如果我将其更改为“位置” header 重定向,则测试通过。

我已经开始了另一个问题来弄清楚为什么“重新加载”重定向不起作用。您可以在这里找到它:Why doesn't Codeception's PhpBrowser follow a "Reload" header?

关于php - 使用 PhpBrowser 的 Codeception 似乎不遵循重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19459735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com