【发布时间】:2018-06-20 03:48:48
【问题描述】:
我正在尝试使用使用 Searchkick 的 RSpec 测试一个类。
我的规范支持目录中有以下内容:
RSpec.configure do |config|
config.before(:suite) do
# Reindex models
Restaurant.reindex
# and disable callbacks
Searchkick.disable_callbacks
end
config.around(:each, search: true) do |example|
Searchkick.callbacks(true) do
example.run
end
end
end
我的测试看起来像这样:
describe Restaurants::SearchFacade, search: true do
subject { described_class }
describe '#search' do
context 'with a query' do
let!(:restaurant_1) { create(:restaurant, :reindex, description: 'Amazing sour dough pizza place') }
let!(:restaurant_2) { create(:restaurant, :reindex) }
it 'returns values containing the query' do
Restaurant.search_index.refresh
params = { search: { query: 'sour dough' } }
facade = subject.new(params)
expect(facade.search.total_count).to eq(1)
end
end
end
end
我应该收到 1 个结果。但是,Searchkick 返回 0 个结果。这不是外观的问题,因为我也尝试过使用 Restaurant.search('*'),它应该返回所有结果,但没有返回任何结果。
我的餐厅类如下所示:
class Restaurant < ApplicationRecord
searchkick searchable: %i[title description street_address]
end
我的工厂看起来像这样:
FactoryBot.define do
factory :restaurant do
association :plan
association :company
sequence :title do |n|
"Restaurant #{n}"
end
description 'An awesome restaurant'
# More attributes here...
trait :reindex do
after(:create) do |restaurant, _evaluator|
restaurant.reindex(refresh: true)
end
end
end
end
知道是什么原因造成的吗?任何帮助将非常感激。提前致谢!
【问题讨论】:
-
你解决过这个问题吗?我遇到了同样的问题。
标签: elasticsearch rspec searchkick