2016-09-22 13 views
0

私はthink-Sphinxテストケースを書いています。私はテストケース私の場合のmessage.update_columnでThinkingSphinxの場合、Fixtureカラムが更新されない

test 'z' do 

    app = applications(:one) 
    message = messages(:two) 
    message.update_column(:messagable_id, app.id) 
    message.update_column(:comment, 'This is second message') 

    ThinkingSphinx::Test.start 
    sign_in @user 
    ThinkingSphinx::Test.index 

    get :index, company_id: @company.id, qc: 'Messages', q: 'Body | second', format: 'json' 
    assert_response :success 
    assert_equal decode_json_response(@response)['apps'].count, 2 
end 

を以下していることは、私はその後、私は私のテストケース パスを持ったメッセージ器具で同じ変更を加える代わりにあれば、に影響を与え取っていません。

update_columnは他のどこでもupdate_columnがうまく働いているので、スフィンクスを考えては影響を取っていない理由を具体的な理由があります。

+0

テスト用のトランザクションフィクスチャを使用していますか? – pat

+0

はい、私はtransnationalの備品を使用しています –

答えて

1

indexを呼び出していると思われるSQL対応のインデックスを使用している場合、Sphinxのインデックス作成が行われるため、Sphinx/Thinking Sphinxを含むテストにトランザクションフィクスチャを使用することはできませんデータベースへの別の接続を介して、テストの範囲内で動作しているトランザクションは利用できません。

The documentationは、DatabaseCleanerを使用し、Sphinxを含むテストで削除方法を使用する可能性をカバーしています - 例はRSpecのものですが、別のテストライブラリを使用しているようですので、あなたのケースでこれを実装する方法の詳細。

+0

私はレールを使用していますminitest。私が見つけた解決策はこれでした:make use_transactional_fixtures = false –

関連する問題