RSpe c: результат тестирования из ActiveRecord :: Base.connection - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий метод, который собирается выполнить много необработанных sql и вернуть его в массив.

Затем я преобразую массив в JSON. Я хочу написать тест, который проверяет правильность этого преобразования в Json.

def get_data
  results = connection.raw_connection.execute(sql).each
  transform_results(results)
end

private  
def transform_results(results)
      {
          some_value: results[0]['some_value'],
          another_value: results[0]['another_value']
      }
 end

Как мне написать Rspe c, который проверяет метод transform_results для проверки того, что Json отображается правильно, предполагая, что я макет results массив.

Что-то вроде этого?

allow_any_instance_of (?????). чтобы получить (: каждый) .and_return (результат)

1 Ответ

0 голосов
/ 03 апреля 2020

В общем, вы не должны тестировать частные методы - просто продолжайте тестировать метод publi c, get_data.

Вот вопрос стека: Стоит ли тестировать частные методы с использованием RSpe c?

Однако есть способ протестировать частные методы, используя send . И здесь - это вопрос стека о том, как тестировать приватные методы в RSpe c.

Для тестирования хэшей (который может оказаться полезным для проверки get_data) вы можете использовать включают совпадения

it 'maps results correctly' do
  expect(instance.send(:transform_results, :results)).to include(some_value: 'some_value', antoher_value: 'antoher_value')
end
...