2014-12-07 2 views
0

У меня есть желание сделать простой тест BDD.Значение не редактируется. Огурец + Capybara

У меня есть сценарий, как это:

Background: movies in database 

    Given the following movies exist: 
    | title  | rating | director  | release_date | 
    | Star Wars | PG  | George Lucas | 1977-05-25 | 
    | Blade Runner | PG  | Ridley Scott | 1982-06-25 | 
    | Alien  | R  |    | 1979-05-25 | 
    | THX-1138  | R  | George Lucas | 1971-03-11 | 

Scenario: add director to existing movie 
    When I go to the edit page for "Alien" 
    And I fill in "Director" with "Ridley Scott" 
    And I press "Update Movie Info" 
    Then the director of "Alien" should be "Ridley Scott 

У меня есть шаги, как это:

When /^(?:|I)go to (.+)$/ do |page_name| 
    visit path_to(page_name) 
end 

When /^(?:|I)fill in "([^"]*)" with "([^"]*)"$/ do |field, value| 
    fill_in(field, :with => value) 
end 

When /^(?:|I)press "([^"]*)"$/ do |button| 
    click_button(button) 
end 

Then /^the director of "([^"]*)" should be "([^"]*)"$/ do |movie, director| 
    film = Movie.find_by_title(movie) 
    puts page.body 
    assert film.director.should == director 
end 

Моя проблема заключается в том, что значение директора не редактирования. И я не могу сравнить его с режиссером.

Другие значения присваиваются правильно, я могу, например, утверждать «film.rating.should == director» И получить то, что ожидалось, «Ридли Скотт» получил «R». Но для режиссера я получил нуль.

Это не проблема с представлением, для которого я создал поле для редактирования директора или db, где у меня есть столбец dirctor.

Моя интуиция заключается в том, что db не перезагружается, но я не мог найти команду для этого.

Я буду рад за любую помощь :)

Ответ:

Я забыл включить: директор в моей модели, и wasn`t состояния retrive аргумента. Thnx за любую помощь, так как я узнал от нее в любом случае.

+0

вы мигрировали БД для окружения 'test', exaclty для' cucumber' среды? –

+0

Я использовал rake db: test: подготовлен, и он все еще не передал отредактированное значение – Kazik

+0

'RAILS_ENV = test rake db: migrate', вы используете test db с именем' test' –

ответ

1

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

Если вы дали свой тест еще нескольким шагам, например, перейти на страницу фильма «Чужой» и проверить, отображается ли режиссер на странице «Ридли Скотт», вы знали бы, что директор был изменен в вашей базе данных но также и то, что он отображается в вашем представлении (что-то, что не проверяется, напрямую проверяя базу данных).

Rspec expectations отлично подходит для проверки содержания страницы.

например

expect(page).to have_text("Director: #{director})

+0

Вина была на моей стороне, кстати, ваш ответ было также правильно, когда я нажимаю на операнд директора attr_accessor – Kazik

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