Огурец: сценарий, создающий запись и удаляющий ее перед тестом => ошибка - PullRequest
1 голос
/ 22 декабря 2010

Я новичок в огурце, и я борюсь с ним в моем приложении Rails 3:)

Вот драгоценные камни, включенные в мой гемфайл: огурец, огуречный рельс, rspec, rspec-rails,capybara, capybara-envjs, database_cleaner, launchy

Я настроил следующее:

require 'capybara/envjs'
Capybara.javascript_driver = :envjs

На моем сайте любой может подписаться на новостное письмо.Он отлично работает через ajax и отображает приятное рычащее сообщение:

  • mail valid => Welcome ...
  • mail invalid => Oops ...

Следующий сценарий работает нормально, когда я комментирую строку: I should have 1 mail in my mailing list.

С этой строкой у меня появляется следующее сообщение об ошибке: And I should have 1 mail in my mailing list # features/step_definitions/mailing_steps.rb:1 expected: 1, got: 0 (using ==) (RSpec::Expectations::ExpectationNotMetError)

@javascript
Scenario: Entering Valid Mail
Given I am on the about page
When  I fill in "mailing[mail]" with "cucumber@cucumber.com"
And   I press "REGISTER"
Then  I should be on the about page
And   I should have 1 mail in my mailing list
And   I should see "Welcome" within "#gritter-notice-wrapper"

Вот шаг, который я добавил:

Then /^I should have ([0-9]+) mail in my mailing list?$/ do |count|
  Mailing.count.should == count.to_i
end

Возможно, это связано с базой данныхчище, но я сохранил конфигурацию по умолчанию: усечение

Любая идея, пожалуйста?

PS: я должен добавить, что при обновлении моей базы данных, как идиот, я вижу, что почта сначала добавляется, а затем удаляется.

1 Ответ

0 голосов
/ 16 марта 2011

Я бы бросил черту отладчик на

Then /^I should have ([0-9]+) mail in my mailing list?$/ do |count|
  debugger
  Mailing.count.should == count.to_i
end

И проверьте, сколько существует рассылок.

Отладчику потребуется установить гем 'ruby-debug' или 'ruby-debug19'.

Если Mailing.count равен 0, я переместил бы эту строку отладчика в более раннюю часть теста, пока не обнаружил, где она была равна 1, а затем изолировал бы момент времени или код, в котором она будет равна 0.

...