Проблема с Thinking Sphinx и функциональными тестами

#ruby-on-rails-3 #functional-testing #thinking-sphinx

#ruby-on-rails-3 #функциональное тестирование #мышление-sphinx

Вопрос:

это мой тест (с помощниками shoulda):

   context "searching from header" do
    setup do
      Factory(:city, :name => 'Testing It')
      ThinkingSphinx::Test.index 'city_core', 'city_delta'
      ThinkingSphinx::Test.start

      get :index,
          :query => 'Testing It'
    end

    should respond_with(:success)
    should assign_to(:results)
    should "have one city on the result" do
      assert_equal( assigns(:results).count, 1 )
      assert_kind_of( assigns(:results).first, City )
    end

    ThinkingSphinx::Test.stop
  end
  

Все работает нормально, за исключением того, что в тесте всегда указывается количество результатов, равное 0, а не 1.

Я отладил этот код, и когда запрос достигает контроллера, индексы Sphinx полностью пусты, даже при явном вызове index для него.

Я делаю что-то не так здесь?

Любая помощь приветствуется.

Ответ №1:

Я обнаружил проблему … даже несмотря на то, что вставка в базу данных происходит непосредственно перед ThinkingSphinx.index , с фиксацией транзакций, после setup блокировки записи удаляются.

Решением было добавление в тест следующей строки:

 self.use_transactional_fixtures = false
  

Надеюсь, это поможет кому-либо с такой же проблемой.