Тесты Rspec выполняются в неправильной среде?

У меня есть тест интеграции, который выполняется с использованием селена. В моем случае перед каждым я создаю несколько объектов и индексирую их с помощью solr. Я вижу активность в моем тестовом журнале subnsspot solr. А затем в своем тесте я выполняю поиск и получаю сообщение об ошибке, потому что мой сервер sunspot solr не работает. Это потому, что он работает с RAILS_ENV = test.

Вот мой перед каждым:

before :each do
 Sunspot.remove_all!(Residential)
 Sunspot.commit

  @prop1 = FactoryGirl.create(:residential, { subdivision: "Steiner Ranch", street_name: "propone" })
  @prop1.index!
  @prop2 = FactoryGirl.create(:residential, { subdivision: "Jester Estates", street_name: "proptwo" })
  @prop2.index!
  @prop3 = FactoryGirl.create(:residential, { subdivision: "Cypress Ranch", street_name: "propthree" })
  @prop3.index!
end

И вот мой тест:

it "single word", :js => true do
  visit '/'
  fill_in 'subdivision', :with => 'cypress'
  page.should_not have_content('propone')
  page.should_not have_content('proptwo')
  page.should have_content('propthree')
end

Любая идея, почему поиск выполняется в среде разработки, а не в тестовой среде? У меня есть ENV["RAILS_ENV"] ||= 'test' в качестве первой строки в моем spec_helper.


person kidbrax    schedule 06.10.2012    source источник
comment
Оказывается, я устанавливал свою среду в своей конфигурации Spork, но в то время не запускал spork.   -  person kidbrax    schedule 09.10.2012


Ответы (1)


У меня была такая же проблема. Оказывается, приложение Rails, которое я запускал, фактически указало ENV["RAILS_ENV"] = 'development' в файле конфигурации (файл конфигурации Apache, поскольку мы используем пассажир).

Если это так для вас, то вы можете заменить

ENV["RAILS_ENV"] ||= 'test' 

с участием

ENV["RAILS_ENV"] = 'test'

в вашем spec_helper.

Я сделал это с тех пор

  1. у нас нет RSpec на наших производственных машинах и
  2. мы не проводим тесты в продакшене.
person webdevguy    schedule 06.10.2012
comment
Это не сработало. И если я регистрирую текущую среду как во время до, так и во время теста, он говорит «тест», но все равно ищет сервер солнечных пятен «разработки». - person kidbrax; 06.10.2012