【发布时间】:2015-11-26 12:15:38
【问题描述】:
我想测试条目的隐藏和取消隐藏。我在 Mojolicious t/basic.t 中进行了以下测试:
my $t = Test::Mojo->new('AdminApi');
$t->get_ok('/publications/hide/1');
$t->get_ok('/read/publications/meta')->content_unlike(qr/Paper with id 1:/i);
$t->get_ok('/read/publications/meta/1')->content_like(qr/Cannot find entry id: 1/i);
$t->get_ok('/publications/unhide/1');
$t->get_ok('/read/publications/meta')->content_like(qr/Paper with id 1: <a href/i);
$t->get_ok('/read/publications/meta/1')->content_unlike(qr/Cannot find entry id: 1/i);
我的问题是'/publications/hide/1'和'/publications/unhide/1'这两行不隐藏和取消隐藏条目。条目的状态保持不变。
如果我在浏览器中手动重复这些步骤,一切正常。出于显而易见的原因,我希望通过测试使其自动化。如何做到这一点?
编辑:调用 '/publications/hide/1' 和 '/publications/unhide/1' 改变了数据库的状态 - 只是一个简单的 UPDATE 查询。此更改适用于整个应用程序 - 适用于所有用户。但是需要以用户身份登录才能隐藏/取消隐藏。问题:如何在测试期间模拟登录用户?
“/read/publications/meta”和“/read/publications/meta/1”生成的内容无需登录即可阅读。
【问题讨论】:
-
/publications/hide/1和/publications/unhide/1是否改变了服务器上应用程序内部资源的状态?该状态是否与用户有关,或者一般而言与整体应用程序有关?$t是否有会话 cookie,它是否为它与get_ok发出的每个请求保持相同的会话? -
我添加了缺少的信息和代码存储库的链接。
标签: perl testing automated-tests mojolicious