2012-02-02 93 views
2

我使用sphinx和思維獅身人面像來在我的Ruby on Rails應用程序中搜索數據。所以,我有這個測試來檢查我的工作:Ruby on Rails - Sphinx不會在Rspec測試中索引數據

require 'spec_helper' 
require 'thinking_sphinx/test' 

describe SearchesController do 
    render_views 

    #Start search server in test mode 
    before(:all) do 
     ThinkingSphinx::Test.init 
     ThinkingSphinx::Test.start 
    end 

    describe "when signed in" do 
     before(:each) do 
     @user = test_sign_in(Factory(:user)) 
     @micropost = Factory(:micropost, 
           :user => @user, 
           :content => "Test message of user") 
     ThinkingSphinx::Test.index 
     get :find_microposts, :q => @micropost.content      #Sending data (by :q => "Text") 
     end 

     it "should find micropost of user" do 
     response.should have_selector("table.microposts", 
             :content => @micropost.content) 
     end 
    end 
    end 


    #Stop search server in test mode 
    after(:all) do 
     ThinkingSphinx::Test.stop 
    end 
end 

問題是 - ThinkingSphinx::Test.index不起作用。爲什麼?

sphinx.yml

development: 
    port: 9312 
    ... 

test: 
    port: 9313 
    ... 

我的系統:

Mac OS X 
PostgreSQL 9 
Rails 3.1.3 
Ruby 1.9.3 
Sphinx 2.0.3-release (r3043) 

回答

5

是否使用事務燈具使用RSpec?因爲Sphinx無法訪問RSpec上下文以外未保存在數據庫中的記錄。此外,你應該允許一個季度索引後半秒的獅身人面像與索引數據趕超:

sleep(0.25) 

所有這一切說,我會在你的控制器測試建議刪空獅身人面像,只有內運行獅身人面像整合測試(通過黃瓜/水豚或其他)。

+0

感謝您提供'sleep'提示,這讓我瘋狂。 – declan 2012-10-11 20:03:52