Я новичок в Ruby и RSpec, сделал небольшое исследование и увидел, что есть несколько способов сделать сортировку данных с помощью перечисления тестов из сообщений в Интернете, но они не попадают во многие детали, как полный учебник. Поэтому, прежде чем я снова просмотрю эти онлайн-статьи, подумал, что сначала попрошу здесь.Структурирование CSV-данных с помощью теста RSpec простым простым способом?
Вот как у меня есть настройка, основанная на стандартном простом способе использования RSpec (определенный описать & он блокирует, а не импортирует части RSpec, чтобы делать только ожидания). Тогда я пытаюсь добавить в данной ведомой способности к нему:
require 'rspec'
require 'csv'
describe "test suite name" do
before :all do
#this CSV mapping method found online...
@device_client = CSV.read path
@descriptor = @device_client.shift
@descriptor = @descriptor.map { |key| key.to_sym }
@device_client.map { |client| Hash[ @descriptor.zip(client) ] }
end
@device_client.each do |client|
describe "#{client[:test_scenario]}" do
if "match some CSV field value"
it "should run this kind of test" do
#additional code as needed
expect(some_actual).to eql(some_expected)
end
end
if "match some other CSV field value"
it "should run that kind of test" do
#additional code as needed
expect(some_actual).to eql(some_expected)
end
end
it "some other test common to all CSV rows" do
#stuff
end
end
end
end
Что я замечаю здесь в том, что @device_client равна нуль, как она структурирована прямо сейчас (отлажено с «р @device_client» заявление сбросить содержимое из) , Чтобы получить его значение, я должен заключить хэш внутри его блока, где он находится в области видимости (который, как правило, у меня внутри другого блока описания, хотя я предполагаю, что могу пропустить дополнительный описать).
Как я могу провести реструктуризацию теста, чтобы «прочитать» то же самое (читателю теста) и работать так, как я его намерен? Это нормально, если реструктуризация означает, что я не могу использовать стандартный формат RSpec и должен требовать компонентов RSpec по-разному (сообщения в Интернете, похоже, не соответствуют простому/базовому формату RSpec).
Я думаю, что мой код довольно грубо интерпретируется. В случае нет, целью является использование CSV-входа для динамического создания теста. Каждая строка CSV представляет собой сценарий, который имеет несколько тестов - 1 тест отличается на основе значения поля CSV, следовательно, ifs, остальные тесты являются общими для всех сценариев. И мы повторяем этот набор для столько строк сценария CSV, которые находятся в файле. И перед всем блоком находится глобальная настройка, прежде чем обрабатывать данные CSV.
В реструктуризации, в идеале, я хотел бы оставить описание текстовых блоков (или их эквивалентных им), чтобы в результатах теста отображались описания тестов, а не только куча ожиданий.
Спасибо, за решение и проницательную информацию. – David