2017-02-19 26 views
0

Я новичок в тестировании рельсовых приложений, так как обычно я просто ручное тестирование ... но на этот раз я стараюсь сделать это правильно.Почему этот простой миниатюрный провал?

Почему этот базовый тест не работает?

test "once you go to to app you are asked to sign in" do 
    get "/" 
    assert_redirected_to "https://stackoverflow.com/users/sign_in" 
    assert_select "title", "Home Sign-In" 
end 

Первое утверждение является успешным, но не вторым. Заголовок кажется правильным при просмотре источника.

<title>Home Sign-In</title> 

ответ

2

Если у вас есть перенаправление вызова в вашем методе контроллера, он не актуализируется. Вот почему вы не можете использовать assert_select.

Вы можете попытаться разделить тестовый случай на два:

test "once you go to to app you are asked to sign in" do 
    get "/" 
    assert_redirected_to "https://stackoverflow.com/users/sign_in" 
end 

test "sign in page title is correct" do 
    get "https://stackoverflow.com/users/sign_in" 
    assert_select "title", "Home Sign-In" 
end 
0

@Pavel прав. Простой способ проверить ответ после получения запроса @ response.body. Так что в вашем случае

test "once you go to to app you are asked to sign in" do 
    get "/" 
    assert_redirected_to "https://stackoverflow.com/users/sign_in" 
    byebug #print @response.body here. At this point @response.body will 
    # be "You are being redirected to /users/sign_in". 
    assert_select "title", "Home Sign-In" 
end 

Таким образом, вы можете изменить его, как Павел предложил

test "sign in page title is correct" do 
    get "https://stackoverflow.com/users/sign_in" 
    assert_select "title", "Home Sign-In" 
end