Test::WWW::Mechanize::Catalyst の get_ok がcatalystアプリのuriしか見に行かない説
use Test::WWW::Mechanize::Catalyst 'Niget::Web'; my $mech = Test::WWW::Mechanize::Catalyst->new(catalyst_app => 'Niget::Web'); $mech->get_ok("http://google.co.jp/");
これがokになっても
p $mech->content;
で見ると、何かnigetの / を見に行ってることが分かる。これにハマった。
追ってみよう
- Test::WWW::Mechanize::Catalyst->get_ok
A wrapper around WWW::Mechanize's get(), with similar options, except the second argument needs to be a hash reference, not a hash. Returns true or false.
とか言ってるけど本体は継承してるTest::WWW::Mechanizeにある。
Test::WWW::Mechanize->get_okを見ると
$self->get( $url, %opts );
と。で、継承元のWWW::Mechanizeを見る。
- WWW::Mechanize->get
get() is a well-behaved overloaded version of the method in LWP::UserAgent.
sub get { my $self = shift; my $uri = shift; $uri = $uri->url if ref($uri) eq 'WWW::Mechanize::Link'; $uri = $self->base ? URI->new_abs( $uri, $self->base ) : URI->new( $uri ); # It appears we are returning a super-class method, # but it in turn calls the request() method here in Mechanize return $self->SUPER::get( $uri->as_string, @_ ); }
- 何か三項演算子があるけど
% perl -le 'use URI; print URI->new_abs("http://yahoo.co.jp/", "http://google.co.jp")' http://yahoo.co.jp/ % perl -le 'use URI; print URI->new("http://yahoo.co.jp/", "http://google.co.jp")' http://yahoo.co.jp/
どっちに行っても問題なさげ。はいはい先先。
と行きたいところだけど。LWP::UserAgent->getって、引数のuri見に行くじゃん…
すいません分からないまま放棄。