我正在写思考-Sphinx测试用例。我有以下测试用例
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
在我的情况下,message.update_column没有生效,相反,如果我在消息夹具中进行相同的更改,那么我得到了我的测试用例 通过。
有什么特别的原因可以解释为什么update_column不会影响思考sphinx ,因为其他地方的update_column工作得很好。
答案 0 :(得分:1)
如果您正在使用SQL支持的索引(如果您正在调用index
,似乎就是这样?),那么您就无法使用事务性工具进行测试Sphinx / Thinking Sphinx,因为Sphinx的索引通过与您的数据库的单独连接进行,并且在您的测试范围内运行的交易是不可用的。
The documentation涵盖了使用DatabaseCleaner和使用删除方法进行涉及Sphinx的测试的可能性 - 虽然示例适用于RSpec,看起来您正在使用不同的测试库,所以我&# 39;我不太确定如何在你的情况下实现这一点。