2010-05-29 3 views
5

Я создал несколько лесов для моего приложения для рельсов.Почему мои функциональные тесты терпят неудачу?

Я запускаю сгенерированные тесты, и они не работают.

, например

test "should create area" do 
    assert_difference('Area.count') do 
     post :create, :area => { :name => 'area1' } 
    end 

    assert_redirected_to area_path(assigns(:area)) 
    end 

Это испытание терпит неудачу о том, что:

1) Неудача: test_should_create_area (AreasControllerTest) [/test/functional/areas_controller_test.rb:16]: «Area.count» не изменился на 1. < 3> ожидается, но был < 2>.

В модели есть только одно поле: имя. Я заполняю это так, потому что я не могу заполнить единственное поле.

Я могу запустить сайт и создать область с названием 'area1'. Таким образом, реальность преуспевает, но тест терпит неудачу.

Я не могу спросить, почему его неудача, потому что я уверен, что здесь недостаточно информации для кого-нибудь, чтобы узнать почему. Я просто застрял в понимании того, какие способы пойти, чтобы понять, почему тест терпит неудачу. Даже если положить код в код не распечатывать ...

Какие шаги я могу предпринять, чтобы отслеживать это?

+0

Результат от test.log должен быть полезен здесь, поэтому вы можете увидеть, действительно ли существует создаваемая область, или если есть некоторая ошибка SQL, которую едят. – jdl

+0

Aaahh ... Хорошо, что помогает. Test.log показывает мне, что тест терпит неудачу, потому что я не вошел в систему. Я настроил его так, чтобы только аутентифицированные пользователи могли создавать области. Все имеет смысл. Вы должны сделать так, чтобы я мог принять его! благодаря –

ответ

2

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

1

@request и @response также являются полезными объектами для просмотра (то есть puts @response внутри вашего теста). Я не знаю, какую аутентификацию вы используете, но отметьте RAILS_ROOT/lib за authenticated_test_helper или /lib, или /test вашего удостоверения подлинности. Вы найдете методы для входа в систему.