我正在为应用程序(Utilizing Test::Class::Moose;Catalyst::Test)编写测试套件,但遇到了一些障碍。我有一个测试来检查我是否从 URL 获得了成功的响应,然后检查标题。大多数测试都通过了,但一些 URI 重定向到登录页面。即:
如果我通过/foo/bar,我会得到我期望的标题
but
如果我传递/foo/baz,它会重定向到登录页面。 '
(在这两种情况下,我都得到了成功的响应:200,并且身份验证要求是相同的)
我的问题是:Catalyst::Test 如何处理用户身份验证以及为什么它会通过某些 URI 而不是其他 URI 的身份验证检查?文档在这方面非常模糊,谷歌博士也没有返回任何有用的信息。
注意:该代码不是“我的”,因此我无法发布它,但如果需要,我可以提供抽象示例。
最佳答案
使用 Catalyst::Test 时request当您的 URI 需要身份验证凭据时,方法可能对您有用。
这个方法可以接受一个HTTP::Request允许您设置 URI 字符串以外的请求信息的对象。最值得注意的是,如概要所示,您将希望设置用户代理以支持传递凭据并涵盖诸如持久性 cookie 之类的内容,这可能是 session 状态实现。
参见 LWP::UserAgent有关这方面的更多信息。
至于考虑为什么有些 URI 需要身份验证而有些不需要身份验证的问题,这取决于代码中的设置方式。即使在 Root Controller 的 begin
或 auto
操作中有一般的身份验证调用,调度过程也可能被覆盖。花点时间消化以下内容可能适用。
Introduction to Catalyst: Built-in actions in controllers/autochaining
关于perl - 测试 Catalyst URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560838/