2016-09-22 2 views
0

Я пишу анализы для тестирования сфинксов. я следующий тестовый случайОбновление колонки прибора не работает в случае ThinkingSphinx

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 не принимает аффект с мышлением сфинкса, потому что везде update_column работает просто отлично.

+0

Вы используете транзакционные светильники для своих тестов? – pat

+0

Да, я использую транснациональные светильники –

ответ

1

Если вы используете индексы с поддержкой SQL (и, кажется, вы находитесь, если вы звоните index?), То вы не можете использовать транзакционные приборы для тестов, которые включают Sphinx/Thinking Sphinx, потому что индексирование Sphinx происходит через отдельные подключения к вашей базе данных, а транзакция, которая работает в рамках вашего теста, недоступна.

The documentation охватывает возможность использования DatabaseCleaner и использования метода удаления для тестов, которые включают Sphinx - хотя пример для RSpec, и похоже, что вы используете другую тестовую библиотеку, поэтому я не совсем уверен в специфика того, как реализовать это в вашем случае.

+0

Я использую рельсы minitest. Решение, которое я нашел, было следующим: make use_transactional_fixtures = false –

 Смежные вопросы

  • Нет связанных вопросов^_^