perl - 如何验证文件名?
问题描述
我有一个为用户头像返回文件的函数,我想为它创建测试。我想要做的是检查文件的名称。
这是功能:
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 的名称是否等同于“用户名”(这是来自服务器的文件的名称)或“默认”,如果它是默认头像。
解决方案
不要使用文件路径。使用实际图像。创建两个小的测试图像。它们可以是 2x2 像素的 PNG 文件。也许使它们单一颜色,但不同。有一个是你的默认。
然后将其序列化并将其作为字符串放入您的测试中。运行$t->tx->res->body
相同的序列化,并比较这两者。
如果您愿意,您还可以在运行代码之前让测试部署该映像,这样您的应用程序就不会依赖于那里的映像。
推荐阅读
- java - addListenerForSingleValueEvent 监听器方法后数组列表变为空
- keras - 在keras中使用标签powerset时如何传递纪元和批量大小
- excel - 如何使用此代码将范围更改为 AC?
- java - java 类如何以相同的方法名扩展另一个类并同时实现接口
- java - java.lang.Error:未解决的编译问题:specialChr 和小写无法解析为变量
- android - 当尝试将 byteArray 写入文件时,它会转换 0B png 文件,无法获取有效文件
- numbers - 在聚合物 3 中用点替换数字的交替 2 位数字
- c++ - 如何在窗口外绘制图形(OpenGL glfw)
- html - 是否可以在 django 中循环自定义模型表单?
- angular - Angular 应用程序中的状态是什么意思?