Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 4 rspec太阳黑子solr测试间歇性失败_Ruby On Rails_Ruby_Solr_Rspec - Fatal编程技术网

Ruby on rails rails 4 rspec太阳黑子solr测试间歇性失败

Ruby on rails rails 4 rspec太阳黑子solr测试间歇性失败,ruby-on-rails,ruby,solr,rspec,Ruby On Rails,Ruby,Solr,Rspec,让我们为这个问题做准备 这是我们的模型: class Deal < ActiveRecord::Base belongs_to :retailer has_many :content_locations, as: :locatable has_many :stores, through: :content_locations searchable do text :title text :store_name text :store_sort_na

让我们为这个问题做准备

这是我们的模型:

class Deal < ActiveRecord::Base
  belongs_to :retailer
  has_many :content_locations, as: :locatable
  has_many :stores, through: :content_locations

  searchable do
    text :title
    text :store_name
    text :store_sort_name
    text :description
  end

  scope :by_keyword, ->(keyword, limit, offset) {
    search {
      fulltext keyword
      paginate offset: offset, per_page: limit
    }.results
  }
end
我们看到的是,我们的测试随机失败。我可以一次又一次地成功执行该测试1-3次,但第4次将失败,或者它将失败4次,第5次将失败。这种模式是完全随机的。正如您所见,我们尝试将睡眠添加到此设置中,但这只会减慢速度

任何提示都将不胜感激。这让我们快发疯了

他们一直在打电话

 Sunspot.commit
在数据创建之后和任何检查之前

更新:

您还可以调用
model.index,它将立即将特定模型同步到solr索引中。在一个特定的例子中,我还必须在保存之后和索引之前调用
model.reload
,因为一些标记关系附加到模型(但是这是特定于标记的)


我们决定走一个完全不同的方向,老实说,我不建议任何阅读本文的人实时点击SOLR。这是一种痛苦


我们的最终解决方案是用gem代替。

我想你也试着睡1秒钟以上。会花很长时间去尝试。保存到Solr是异步的,它只是嗅到了异步问题。我曾经检查过“轮胎”测试套件(ElasticSearchGem),看看他们是如何处理的。他们没有任何测试来检查真实数据。只是检查查询是否正确生成。有点道理。为什么要检查solr是否正常工作?如果您也可以依赖solr gem,只需通过模拟来检查deal_by_关键字是否使用正确的参数调用。睡眠计时器没有更改输出:(我也在考虑这种方法,但希望确保与SOLR的交互工作正常。嗯……我喜欢这种情况,但我们在功能规格?想法?更新答案方面存在问题。我们在功能(集成)中使用
model.index!
)规格现在。然而,我认为这只是因为我们在模型上有这些标记关系。它们只有在
模型之后才能正确加载。重新加载
。拥有
太阳黑子。提交
只会导致侧面通过规格。我们最终采用了与您发布的方法类似的方法,所以我给您评分,但是,我们有了一个新问题。会吗你有没有偶然发现的?
 Sunspot.commit
  #simple
  Factory.create(:model).tap { |m| m.index! }


  #advanced
  model = Factory.build :model_with_relationships
  model.save
  model.reload #optional
  model.index!