тест на селен показывает, что электронное письмо уже занято - PullRequest
0 голосов
/ 04 июля 2011

Я запускаю тесты в своем приложении Rails 3.Я использую rspec, capybara и Selenium RC.

У меня есть следующий тест для формы:

require 'spec_helper'
require 'support/database_cleaner.rb'
describe "Greetings" do
  attr_reader :selenium_driver
  alias :page :selenium_driver

  before(:all) do
    selenium_setup
    @selenium_driver.start_new_browser_session
  end

  after(:all) do
    @selenium_driver.close_current_browser_session
    @verification_errors.should == []
  end

  describe "greeting creation" do

 before(:each) do
    @board = Factory(:board)
  end

 describe "success" do
      it "should create and display the greeting" do
           page.open "/boards/#{@board.id}"
           page.click "greeting_link"
           wait_for_ajax
           page.type "greeting_headline", "Hey Have a great day!!!"
           page.type "greeting_content", "I wish you the best birthday ever. Your are a great friend and deserve a great day."
           page.type "user_name", "Example User"
           page.type "user_email", "it@it.com"
           page.click "commit"
           wait_for_ajax
           ("Add greeting").should == page.get_text("greeting_link")
           #("Hey Have a great day!!!").should == page.get_text("css=div.headline.round")
           #page.is_text_present("Hey Have a great day!!!\n\n I wish you the best birthday ever. Your are a great friend and deserve a great day.").should be_true
           #("Hey Have a great day!!!").should == page.get_text("css=div.headline.round")
      end
    end

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

Я пробовал rake db: test: prepare.Нет радостиТа же проблема.

Я установил гем database_cleaner в тестовой среде, и у меня есть следующее в моей спецификации / support / database_cleaner.rb

DatabaseCleaner.strategy = :truncation

RSpec.configure do |config|
  config.use_transactional_fixtures = false
  config.before :each do
    DatabaseCleaner.start
  end
  config.after :each do
    DatabaseCleaner.clean
  end
end

Я полностью потерян здесьЯ NOOB.

Может кто-нибудь указать мне правильное направление, чтобы исправить эту ситуацию?

Ответы [ 2 ]

0 голосов
/ 05 июля 2011

Вот мой блок конфигурации - config.use_transactional_fixtures = false`

config.before(:suite) do
  DatabaseCleaner.strategy = :transaction
  DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
  if example.metadata[:js]
    DatabaseCleaner.strategy = :truncation
  else
    DatabaseCleaner.start
  end
end

config.after(:each) do
  DatabaseCleaner.clean
  if example.metadata[:js]
    DatabaseCleaner.strategy = :transaction
  end
end

end`

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

0 голосов
/ 04 июля 2011

две очевидные возможности - одна из них - по какой-то причине дважды вызывается Фабрика (в этом случае выдается что-то вроде

sequence(:email) {|n| "it@it#{n}.com"}

на вашем заводе должны обойти проблему. Другая возможность состоит в том, что ваша фабрика определяет адрес электронной почты it@it.com - в этом случае у вас возникнет проблема, когда вы попытаетесь сохранить созданный вами в тесте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...