gpt4 book ai didi

ruby-on-rails - 如何使用RSpec测试ThinkingSphinx

转载 作者:行者123 更新时间:2023-12-04 05:34:41 25 4
gpt4 key购买 nike

我在模型中有一个类方法,该方法调用thinking_sphinx的search()方法。我需要检查此类方法。

我想在我的rspec测试案例中启动,索引或停止sphinx。我正在尝试这段代码。

before(:all) do
ThinkingSphinx::Test.start
end

after(:all) do
ThinkingSphinx::Test.stop
end

并在每个测试案例中使用此代码,然后触发搜索查询
ThinkingSphinx::Test.index

但即使在我启动搜索查询后,尽管测试数据库中存在完全匹配的内容,但仍给了我空的结果。

如果您将rspec与think_sphinx一起使用,请通过代码示例指导我

最佳答案

在David发表之后,我们得出了以下解决方案:

#spec/support/sphinx_environment.rb
require 'thinking_sphinx/test'

def sphinx_environment(*tables, &block)
obj = self
begin
before(:all) do
obj.use_transactional_fixtures = false
DatabaseCleaner.strategy = :truncation, {:only => tables}
ThinkingSphinx::Test.create_indexes_folder
ThinkingSphinx::Test.start
end

before(:each) do
DatabaseCleaner.start
end

after(:each) do
DatabaseCleaner.clean
end

yield
ensure
after(:all) do
ThinkingSphinx::Test.stop
DatabaseCleaner.strategy = :transaction
obj.use_transactional_fixtures = true
end
end
end

#Test
require 'spec_helper'
require 'support/sphinx_environment'

describe "Super Mega Test" do
sphinx_environment :users do
it "Should dance" do
ThinkingSphinx::Test.index
User.last.should be_happy
end
end
end

它将指定的表切换到:truncation策略,然后将它们切换回到:trasaction策略。

关于ruby-on-rails - 如何使用RSpec测试ThinkingSphinx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4153691/

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