3

我有一个使用 Sunspot 和 Solr 进行搜索功能的 rails 应用程序。我目前正在编写功能测试(使用 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从我的 searchs_controller_test 的设置方法中运行,则测试通过。但是,这意味着该文件中的每个测试也会运行它的操作,这会使事情变得非常缓慢。

有人可以给我一些关于让 Sunspot 为我的测试环境索引我的固定装置的最佳方法的建议,而不必在每次测试之前都这样做。

非常感谢提前。

4

1 回答 1

5

在桌子上敲了很多次之后,我在我的 searchs_controller_test.rb 中解决了这样的问题(其中 Item 是我正在搜索的模型):

setup do
  Item.reindex
end

不知道这是否是最好的做事方式,但也许它会帮助别人。

于 2012-02-16T10:38:48.870 回答