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見に行くじゃん…


すいません分からないまま放棄。