Рельсы тестер

У меня есть проект, который использовал wisper https://github.com/krisleech/wisper для обеспечения функциональности издателя и подписчиков. Драгоценный камень прекрасно работает в режимах разработки и производства. Однако, когда я пытаюсь добавить для них несколько тестов (rake test: интеграция), вновь добавленные тесты отказываются работать. Издатель (возможно, также слушатель) в режиме тестирования перестал работать.

Core::Request.subscribe(Listener::Studentlistener, async: true)Core::Request.subscribe(Listener::Tutorlistener, async: true)

Я использовал sidekiq в качестве асинхронного бэкэнда, я использовал гем wisper-sidekiq для обработки асинхронных запросов, не уверен, что это будет проблемой? Пума как сервер, МРТ рубин 2.0.0

Нужно ли что-то настраивать для запуска теста?

it "Student can get latest status after looking for xxx tutor" do
  post api_v1_students_request_look_for_xxx_tutor_path, 
     { subject: 'nothing' },
     { "AUTHORIZATION" => "xxx"}
  expect(response).to be_success

  get api_v1_students_status_path, nil,
    { "AUTHORIZATION" => "xxx"}
  expect(response).to be_success
  json_response = JSON.parse(response.body)
  expect(json_response['state']).to eq('matching')
end

Слушатель должен получить публикацию между этими двумя сообщениями и обновить состояние до "совпадающего". Однако теперь, когда я запускаю rspec, тест не удался, потому что издатель никогда ничего не публикует и, следовательно, состояние не обновляется правильно.

1 ответ

Даже авторы полагаются на некоторые насмешки в тестах интеграции, так что это может быть правильным способом.

class MyCommand
  include Wisper::Publisher

  def execute(be_successful)
    if be_successful
      broadcast('success', 'hello')
    else
      broadcast('failure', 'world')
    end
  end
end

describe Wisper do

  it 'subscribes object to all published events' do
    listener = double('listener')
    expect(listener).to receive(:success).with('hello')

    command = MyCommand.new

    command.subscribe(listener)

    command.execute(true)
  end

https://github.com/krisleech/wisper/blob/master/spec/lib/integration_spec.rb

Другие вопросы по тегам