gpt4 book ai didi

elasticsearch - Searchkick在RSpec中不返回任何结果

转载 作者:行者123 更新时间:2023-12-02 22:36:28 29 4
gpt4 key购买 nike

我正在尝试使用RSpec来利用Searchkick测试一个类。

我的规格支持目录中包含以下内容:

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

知道是什么原因造成的吗?任何帮助将非常感激。提前致谢!

最佳答案

尝试摆脱您在before(:suite)和工厂中正在做的所有奇特的事情。您只需在每个规格之前进行操作(如果已设置搜索标签)。

我能够使searchkick与rspec一起工作,并仅用spec_helper.rb中的少量代码为模型建立索引:

RSpec.configure do |config|
config.before(:each) do |example|
# Elasticsearch / Searchkick
if example.metadata[:search]
Searchkick.enable_callbacks
Restaurant.reindex
else
Searchkick.disable_callbacks
end
end
end

旁注:在您的规范设置中创建了一堆Restaurant记录后,您可能仍然需要运行 Restaurant.search_index.refresh代码。我不确定吗?

关于elasticsearch - Searchkick在RSpec中不返回任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939912/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com