【问题标题】:Sunspot search result is empty when using rspec testing使用 rspec 测试时太阳黑子搜索结果为空
【发布时间】:2013-08-30 21:28:17
【问题描述】:

搜索功能在开发和生产中运行良好。但是当我运行 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

更新 刚刚发现如果不清除索引和数据库,两次运行测试后,可以搜索到第一次运行测试的结果。

【问题讨论】:

  • 你弄明白了吗?我也有同样的问题。
  • 您是否为您的测试环境设置了 sunspot.yml?测试:solr:主机名:localhost 端口:8981 log_level:警告路径:/solr/test

标签: ruby-on-rails rspec sunspot


【解决方案1】:

您需要为测试启动一个 Solr 实例。这里有一个非常有用的 sn-p 可以提供帮助:https://github.com/sunspot/sunspot/wiki/RSpec-and-Sunspot#running-sunspot-during-testing

【讨论】:

  • 来自您链接的页面的评论:“单元测试不应触及 Solr。如果您想测试 Solr,请在集成测试中使用 Steak 或 Cucumber 之类的东西。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 2014-03-29
相关资源
最近更新 更多