是时候为Dist::Zilla::Plugin::Catalyst编写功能测试了。但我意识到我不知道从哪里开始。我知道我必须有一个我的测试套件识别的自定义铸币配置文件,并且我可能只是测试以确保所有正确的文件都以合适的权限输出。我完全不确定您使用什么 DZ 模块来包含铸币配置文件,或者如何启动铸币厂,然后检查输出(因为我怀疑它会使用临时目录)。
有人可以给我一些指示吗?有没有其他有测试的铸币模块?
是时候为Dist::Zilla::Plugin::Catalyst编写功能测试了。但我意识到我不知道从哪里开始。我知道我必须有一个我的测试套件识别的自定义铸币配置文件,并且我可能只是测试以确保所有正确的文件都以合适的权限输出。我完全不确定您使用什么 DZ 模块来包含铸币配置文件,或者如何启动铸币厂,然后检查输出(因为我怀疑它会使用临时目录)。
有人可以给我一些指示吗?有没有其他有测试的铸币模块?
这是一个非常基本的铸币者测试文件。
#!/usr/bin/perl
use strict;
use warnings;
use Dist::Zilla::Tester;
use Test::More;
use Path::Class;
my $tzil = Minter->_new_from_profile(
# which profile to run e.g. dzil new -p
[ Default => 'default' ],
# app name
{ name => 'CatApp', },
# location of whats esessntially your tests ~/.dzil
{ global_config_root => dir('corpus/mint')->absolute },
);
# same as running dzil new
$tzil->mint_dist;
# mint root, obviously getting the location of the temporary repo creation
my $mr = dir( $tzil->tempdir )->subdir('mint');
# test to see if CatApp.pm exists
ok( -e $mr->subdir('lib')->file('CatApp.pm'), 'CatApp.pm exists');
done_testing
当然,对于许多真正的测试,您还需要阅读铸造文件。这可以通过$tzil->slurp_file('file');
.
测试铸造 dist 与常规Dist::Zilla::Tester测试没有太大区别,因此您可能希望阅读我写的关于编写简单 Dist::Zilla::Tester 测试的博客。
官方 Dist::Zilla 教程现在有一个关于编写和测试新插件的页面。这涵盖了一般的插件,而不是专门的铸币插件,但是为铸币插件做这件事并没有什么特别或不同的地方。您可以t/minter.
按照建议查看 ,看看它有多相似。
Test::DZil
现在随 Dist::Zilla 一起提供并安装以供其他插件使用,我用它来测试我所有的非核心插件。