मुझे www मशीनीकरण के लिए स्क्रिप्ट ऐप सेट करने के सही तरीके से यकीन नहीं है। मैंने कम से कम एक वैकल्पिक कोशिश की जो काम करता है, हालांकि मैं परीक्षण के साथ कॉन्फ़िगरेशन में पास करने की कोशिश कर रहा हूं ताकि मैं टेस्ट सूट के साथ लॉगिंग को शांत कर सकूं।टेस्ट :: डब्ल्यूडब्ल्यूडब्ल्यू :: मैकेनाइजेशन :: पीएसजीआई के साथ मैं डांसर एप्लिकेशन का परीक्षण कैसे कर सकता हूं?
#!/usr/bin/perl
use strict;
use warnings;
use Dancer qw(:syntax);
use MyApp;
use Test::More;
use Test::WWW::Mechanize::PSGI;
set apphandler => 'PSGI';
set log => 'warning';
set logger => 'note';
my $mech = Test::WWW::Mechanize::PSGI->new(
app => dance, # app => do('bin/app.pl'), #
);
$mech->get_ok('/login') or diag $mech->content;
done_testing;
स्क्रिप्ट पर do
चल परीक्षण चलाने की अनुमति दे रहा है, लेकिन प्रवेश चर सही सेट नहीं हैं और एक ही समय में लगता है कि वहाँ ऐसा करने के लिए एक बेहतर तरीका होगा।
अद्यतन
मुझे लगता है कि मैं एक समाधान के करीब हो रही हो सकता है ...
#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use Cwd qw(realpath);
use Dancer qw(:syntax);
use MyApp;
use Test::More;
use Test::WWW::Mechanize::PSGI;
set apphandler => 'PSGI';
my $appdir = realpath("$FindBin::Bin/..");
my $mech = Test::WWW::Mechanize::PSGI->new(
app => sub {
my $env = shift;
setting(
appname => 'MyApp',
appdir => $appdir,
);
load_app 'MyApp';
config->{environment} = 'test'; # setting test env specific in test.yml detected ok
Dancer::Config->load;
my $request = Dancer::Request->new(env => $env);
Dancer->dance($request);
}
);
$mech->get_ok('/login') or diag $mech->content;
done_testing;
मैं Plack PSGI के लिए Dancer::Deployment documentation से ले लिया। हालांकि, मुझे परीक्षण से 500 त्रुटि मिल रही है।
t/001-login.t .. Subroutine main::pass redefined at t/001-login.t line 8
Prototype mismatch: sub main::pass: none vs (;$) at t/001-login.t line 8
Use of uninitialized value $_[0] in join or string at /home/ccushing/perl5/perlbrew/perls/perl-5.14.1/lib/5.14.1/i686-linux/File/Spec/Unix.pm line 86.
# [2462] debug @0.004442> [hit #1]Adding mysql_enable_utf8 to DBI connection params to enable UTF-8 support in /home/ccushing/perl5/perlbrew/perls/perl- 5.14.1/lib/site_perl/5.14.1/Dancer/Plugin/Database.pm l. 148
# [2462] debug @0.117566> [hit #1]Adding mysql_enable_utf8 to DBI connection params to enable UTF-8 support in /home/ccushing/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/Dancer/Plugin/Database.pm l. 148
# [2462] error @0.148703> [hit #1]request to /login crashed: '/login/default.tt' doesn't exist or not a regular file at /home/ccushing/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/Dancer.pm line 161 in /home/ccushing/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/Dancer/Handler.pm l. 84
# <h2>runtime error</h2><pre class="error">'/login/default.tt' doesn't exist or not a regular file at /home/ccushing/perl5/perlbrew/perls/perl-5.14.1/lib/site_perl/5.14.1/Dancer.pm line 161
डीबीआई त्रुटियां यहां प्रासंगिक नहीं हैं, लेकिन त्रुटि आउटपुट का उनका हिस्सा मुझे मिलता है। मुझे पता नहीं लगा कि यह /login/default.tt
क्यों नहीं मिल रहा है। मुझे लगता है कि यह समस्या है कि यह पता नहीं है कि मेरे विचार फ़ोल्डर प्रश्न में टेम्पलेट के रूप में views/login/default.tt
पर हैं। यह दृश्य plackup
पर चलते समय भी ब्राउज़र में ठीक काम करता है। मैं उलझन में हूं।
अपनी प्रतिक्रिया स्वीकार करते हुए क्योंकि अब यह काम करता है, उम्मीद है कि किसी दिन कोई बेहतर कुछ प्रदान करने में सक्षम होगा। – xenoterracide