我正在尝试运行搜索发生的功能。我添加了ThinkingSphinx文档推荐的必要行
require 'cucumber/thinking_sphinx/external_world'
Cucumber::ThinkingSphinx::ExternalWorld.new
并且还使用事务禁用并使用DatabaseCleaners截断。我有我的功能设置所以在添加用户后,我更新了Sphinx的索引,然后我进行了搜索。
Scenario: Add a client to a project
Given I have a project named "ProjectXYZ"
And I have a client named "Tom Client" with an email address "tom@email.com"
And the Sphinx indexes are updated
And if I search for "Tom" which is a "Client", I have 1 result
即使用户在那里,搜索也会返回0结果。如果我检查User.find_by_first_name(“Tom”)的计数.count.should eq(1)它成功。
以下是我的步骤:
更新索引
Given 'the Sphinx indexes are updated' do
# Update all indexes
ThinkingSphinx::Test.index
sleep(1.0) # Wait for Sphinx to catch up
end
搜索和检查结果
Given /^if I search for "([^"]*)" which is a "([^"]*)", I have (\d+) results?$/ do |query,model,count|
Rails.const_get(model).search_count(query).should == count.to_i
end
我使用的是Rails 3.0.3,Cucumber 0.9.4和Cucumber-Rails 0.3.2
答案 0 :(得分:1)
到目前为止似乎没有什么不合适......如果你还没有,我会建议使用my blog post代替官方文档作为参考(后者需要更新)。
另外:对于您的开发设置,您是否有使用a different port Sphinx的测试/黄瓜环境?虽然如果Sphinx没有在开发中运行,那么这不应该妨碍。