perl - 测试 Catalyst URI

标签 perl testing catalyst

我正在为应用程序(Utilizing Test::Class::Moose;Catalyst::Test)编写测试套件,但遇到了一些障碍。我有一个测试来检查我是否从 URL 获得了成功的响应,然后检查标题。大多数测试都通过了,但一些 URI 重定向到登录页面。即:

如果我通过/foo/bar,我会得到我期望的标题

                but

如果我传递/foo/baz,它会重定向到登录页面。 '

(在这两种情况下,我都得到了成功的响应:200,并且身份验证要求是相同的)

我的问题是:Catalyst::Test 如何处理用户身份验证以及为什么它会通过某些 URI 而不是其他 URI 的身份验证检查?文档在这方面非常模糊,谷歌博士也没有返回任何有用的信息。

注意:该代码不是“我的”,因此我无法发布它,但如果需要,我可以提供抽象示例。

最佳答案

使用 Catalyst::Testrequest当您的 URI 需要身份验证凭据时,方法可能对您有用。

这个方法可以接受一个HTTP::Request允许您设置 URI 字符串以外的请求信息的对象。最值得注意的是,如概要所示,您将希望设置用户代理以支持传递凭据并涵盖诸如持久性 cookie 之类的内容,这可能是 session 状态实现。

参见 LWP::UserAgent有关这方面的更多信息。

至于考虑为什么有些 URI 需要身份验证而有些不需要身份验证的问题,这取决于代码中的设置方式。即使在 Root Controller 的 beginauto 操作中有一般的身份验证调用,调度过程也可能被覆盖。花点时间消化以下内容可能适用。

Introduction to Catalyst: Built-in actions in controllers/autochaining

关于perl - 测试 Catalyst URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560838/

相关文章:

android - Firebase 是否支持 Appium 测试

perl - 催化剂作用接受 0-n 参数

apache - 在 Apache 下的 FastCGI 中使用 Catalyst 进行调度

c - 为什么 Perl 的本地时间函数(和 C 的 tm 结构)中的年份值相对于 1900 年?

arrays - 连接两个数组的元素并在perl中创建一个结果数组

perl - 如何控制 Perl 中缓冲区刷新的时间

java - 测试图表渲染

r - 计算代码覆盖率时 Travis-CI 出现 "failed to find package directory"错误

perl - 使用 Catalyst::Controller::REST 进行错误处理的最佳实践是什么

javascript - 带有 'and' 运算符的 Perl/Javascript 正则表达式