use WWW::Mechanize; use Test::More qw /no_plan/; my $base = 'myuri'; # fake value my $mech = WWW::Mechanize->new; my $form_name = 'searchform'; my $field_name = 'search'; my $term = ''; $mech->get($base); $mech->submit_form( form_name => $form_name, fields => { $field_name => $term}, ); ok($mech->status == 400,'empty searches should have a 400 status'); ok($mech->content =~ /no search term/i, 'and a chide about having no search term'); #### sub chide { my $self = shift; my $chide_msg = shift; $chide_msg=~s/\n/
/gm; # "\n"'s can sometimes totally confuse the headers; weird, but true my $page_title = shift; warn __PACKAGE__,"::error_page:chide: msg is '$chide_msg'" if $ENV{DEBUG}; $self->_vars->{page_template} = $self->_vars->{chide_template}; $self->_vars->{chiding} = $chide_msg; $self->_vars->{page_title} = $page_title if $page_title; $self->_vars->{status} = "400 $chide_msg "; # HTTP status code 400 = 'Bad Request' $self->process; confess $chide_msg if $self->exit_on_error; }