Результат поиска солнечных пятен пуст при использовании тестирования rspec

Функция поиска отлично работает в разработке и производстве. Но когда я запускаю тесты Rspec. массив результатов всегда пуст

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

Parameters: {"utf8"=>"✓", "ga_client_id"=>"", "search"=>"David"}
SOLR Request (3.9ms)  [ path=#<RSolr::Client:0x007fb7f9141f00> parameters={data:       fq=type%3AToon&sort=created_at_d+asc&q=David&fl=%2A+score&qf=name_text+author_text+toon_typetext+tags_text&defType=dismax&start=0&rows=9, method: post, params: {:wt=>:ruby}, query: wt=ruby, headers: {"Content-Type"=>"application/x-www-form-urlencoded; charset=UTF-8"}, path: select, uri: http://localhost:8981/solr/select?wt=ruby, open_timeout: , read_timeout: , retry_503: , retry_after_limit: } ]
Toon Load (0.4ms)  SELECT "toons".* FROM "toons" WHERE "toons"."id" IN (15550, 15551, 15552) AND (state in ('created','flagged'))

В моем контроллере

  @search = Toon.solr_search do
    fulltext params[:search]
    order_by :created_at, :asc
    paginate :page => params[:page], :per_page => 9
  end
  @toons = @search.results

Мой тест rspec: https://gist.github.com/jianbo/6360486

В режиме тестирования

  <%= @search.inspect %> This output correctly as follow:
  <Sunspot::Search:{:fq=>["type:Toon"], :sort=>"created_at_d asc", :q=>"papabear", :fl=>"* score", :qf=>"name_text author_text toon_type_text tags_text", :defType=>"dismax", :start=>0, :rows=>9}>

  <%= @toons.inspect %> is empty array

ОБНОВЛЕНИЕ. Я только что обнаружил, что если я не очистил индекс и базу данных и после двухкратного запуска теста я смог найти результат, который был в первом тесте запуска.


person user1883793    schedule 27.08.2013    source источник
comment
Вы поняли это? У меня точно такая же проблема.   -  person Al17    schedule 21.08.2015
comment
Вы настроили sunspot.yml для своей тестовой среды? тест: solr: имя хоста: порт localhost: 8981 уровень_журнала: ПРЕДУПРЕЖДЕНИЕ путь: /solr/test   -  person user1883793    schedule 24.08.2015


Ответы (1)


Вы захотите запустить экземпляр Solr для тестов. Здесь есть очень полезный фрагмент, который может помочь: https://github.com/sunspot/sunspot/wiki/RSpec-and-Sunspot#running-sunspot-during-testing

person Cole Pilegard    schedule 28.08.2013
comment
Комментарий со страницы, на которую вы ссылаетесь: модульные тесты не должны касаться Solr. Если вы хотите протестировать Solr, сделайте это в интеграционных тестах с чем-то вроде Steak или Cucumber. - person DallaRosa; 14.04.2014