#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
Надеюсь, это поможет кому-либо с такой же проблемой.