Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何验证文件名?_Perl_Testing_Mojolicious - Fatal编程技术网

Perl 如何验证文件名?

Perl 如何验证文件名?,perl,testing,mojolicious,Perl,Testing,Mojolicious,我有一个函数,为用户化身返回一个文件,我想为它创建测试。我要做的是检查文件名 这就是功能: sub get_avatar { my $self = shift; my $username = $self->stash('username'); my $home = Mojo::Home->new; $home->detect('Project'); my $path = $home->child('users', 'avatars', &q

我有一个函数,为用户化身返回一个文件,我想为它创建测试。我要做的是检查文件名

这就是功能:

sub get_avatar {
   my $self = shift;
   my $username = $self->stash('username');

   my $home = Mojo::Home->new;
   $home->detect('Project');
   my $path = $home->child('users', 'avatars', "$username");

   $path = $home->child('img', 'default.png') if !(-e $path);

   $self->render_file('filepath' => $path);
}
这就是测试:

$file = $t->get_ok('/user/username/avatar')->status_is(200);
  //use Data::Dumper;
  //diag Dumper($file);

ok $file =~ 'username';

我想检查$file的名称是否等同于“username”(来自服务器的文件名)或“default”(如果是默认的化身)。

不要使用文件路径。使用实际图像。创建两个小的测试图像。它们可以是2x2像素的PNG文件。可能是单色的,但不同。有一个是你的默认之一

然后将其序列化,并将其作为字符串放入测试中。通过相同的序列化运行
$t->tx->res->body
,并比较这两者


如果需要,还可以让测试在运行代码之前部署该映像,这样应用程序就不依赖于映像的存在。

根据
$t->get_ok()的返回值
是允许链接测试的测试对象
$t
。/user/username/avatar是一种为个人资料照片返回图像的路由,我不知道如何检查该文件的名称以确定其是否正确。也许您可以使用
content\u disposition
参数来提供文件名?看。有关
内容处置
标题的详细信息