2015-05-20 6 views
0

Я тестирую мое приложение с помощью этого кода:Тест Mojo - Преждевременное закрытие соединения

use Carp; use Carp::Heavy; 
use Mojo::Base -strict; 

use Test::More; 
use Test::Mojo; 

use FindBin; 
require "$FindBin::Bin/../script/MyApp"; 
my $t = Test::Mojo->new('MyDb'); 
$t->ua->max_redirects(10); 
$t->ua->inactivity_timeout(3600); 
$t->ua->connect_timeout(3600); 

$t->get_ok('/int/ap/profit/2015-01-01/2015-03-31/overview') 
    ->status_is(200) 
    ->text_is('html body h3' => 'Überblick') 
    ->text_is('tr:nth-child(2) td:nth-child(8)' => '2.000,00') 
    ->text_is('tr:nth-child(5) td:nth-child(8)' => '4.000,00') 
; 

done_testing(); 

Этот тест завершается с Преждевременное закрытие соединения. Тем не менее выполнение одного и того же запроса на morbo возвращает ожидаемый html-код в браузер. Кажется, что $t->ua->inactivity_timeout(3600); здесь не имеет никакого эффекта.

ответ

2

Длительная эксплуатация требует inactivity_timeout на клиента стороны и сервере стороны. Также, если вы пишете неблокирующий код, вы должны иметь render_later.

Однажды мне нужен был вариант max_connections, но я не могу вспомнить, почему. Итак, после этого дня я всегда добавляю max_connections(0) в свой тест :)

См. Пример here.

Когда вы отправляете свой вопрос, вы должны написать простой мохолический пример Lite, который имеет всю логику, которая имеет ошибку. Итак, теперь вы показываете правильный тестовый код и спрашиваете, почему он не работает без основной логики :) Это очень странно. Никто не ответит вам или не придумает возможные события, если у вас есть конкретные вопросы.

Смежные вопросы