2013-04-26 5 views
0

Я пытаюсь написать тест для тестирования поиска sphinx. Мне нужно, чтобы пользователь передавал некоторые параметры в api и на основе этих параметров shpinx выполнял поиск.Как запустить тесты, чтобы они были написаны?

У меня после 3 испытания

в test_helper.rb У меня есть все настроить

require 'factory_girl' 
    require 'thinking_sphinx/test' 
    ThinkingSphinx::Test.init 
    ......... 
    class ActiveSupport::TestCase 

    self.use_transactional_fixtures = false 
    self.use_instantiated_fixtures = false 
    fixtures :all 

И мои тесты

test "should 1st test" do 
    ThinkingSphinx::Test.start 
    # uthenticatoin and creating records in databese with Factory Girl 
    ThinkingSphinx::Test.index 

    get "some/path", {params}, @headers 

    assert_response :success 
end 

test "should 2nd test" do 
    # uthenticatoin and creating records in databese with Factory Girl 
    ThinkingSphinx::Test.index 

    get "some/path", {params}, @headers 

    assert_response :success 
    # other assertions 
end 

test "should 3rd test" do 
    # uthenticatoin and creating records in databese with Factory Girl 
    ThinkingSphinx::Test.index 

    get "some/path", {params}, @headers 

    assert_response :success 
    # other assertions 
    ThinkingSphinx::Test.stop 
end 

Я не знаю, почему мои тесты не участвуете, чтобы они написаны, но 2-й, 3-й, 1-й Как я могу выполнить тесты, чтобы они были написаны. Я использую базовый Rails Test :: Unit. Заказ имеет значение для меня, из-за особенностей теста. спасибо.

ответ

1

Ваши тесты никогда не должны быть написаны таким образом, чтобы порядок имел значение. Я понимаю, почему вы хотите получить заказ, и есть способы справиться с этим. Попробуйте это:

setup do 
    ThinkingSphinx::Test.start 
end 

# Your tests 

teardown do 
    ThinkingSphinx::Test.stop 
end 

Это делает его так, что перед каждый тест ThinkingSphinx::Test запускается и останавливается после каждого испытания. Это идеальный способ настройки, поэтому теперь не имеет значения, в каком порядке выполняются ваши тесты.

Однако, если ThinkingSphinx::Test.start - это долгий процесс, вы можете не захотеть его запускать для каждого теста. Я не знаю, дает ли TestUnit возможность запуска установки до всего набора или набора тестов, но в RSpec вы можете это сделать, и это послужит вам лучше.