Как я могу заставить Sunspot индексировать приборы для моей тестовой среды? - PullRequest
3 голосов
/ 13 февраля 2012

У меня есть приложение rails, которое использует Sunspot и Solr для поиска.В настоящее время я пишу функциональные тесты (используя собственный набор тестов Rails), чтобы убедиться, что когда я вызываю свой контроллер поиска с поисковым термином в параметрах, возвращаются правильные записи.

В настоящее время у меня есть:

test "should_return_some_records" do
  get :index, :term => "search term here"
  assert_response :success
  assert more stuff ...
end

Когда я запускаю rake test: functionals, этот тест бомбардирует с помощью «ActionView :: Template :: Error», поскольку Sunspot возвратил пустой массив результатов из своего блока поиска.

Если язапустите rake sunspot:reindex из моего метода настройки моего search_controller_test, тест пройден.Однако это означает, что это действие также запускается для каждого теста в этом файле, что делает его очень медленным.

Может ли кто-нибудь дать мне пару советов о том, как лучше всего сделать так, чтобы Sunspot проиндексировал мои приборы для моегосреда тестирования, без необходимости делать это перед каждым тестом.

Большое спасибо заранее.

1 Ответ

5 голосов
/ 16 февраля 2012

После долгих ударов головой о стол я решил свою проблему следующим образом (где Item - модель, в которой я ищу) в моем поиске_controller_test.rb:

setup do
  Item.reindex
end

Не знаю, если это лучший способ сделать что-то, но, возможно, это поможет кому-то еще.

...