CSV RSpec est le projet auquel je participe actuellement
expect(csv).to have_content('value')
Je l'ai écrit sous la forme de, mais comme il devenait nécessaire de vérifier la valeur de chaque ligne, je recherchais diverses choses, mais cela ne sortait pas d'une simple recherche, alors j'ai pris une note.
En supposant le csv suivant
column_0 | column_1 |
---|---|
value_1 | value_2 |
value_3 | value_4 |
it 'example' do
csv_content = Sample.csv_content
csv = CSV.parse(csv_content)
# [numéro de ligne][Index des colonnes]
expect(csv[0][0]).to eq 'value_1'
expect(csv[0][1]).to eq 'value_2'
expect(csv[1][0]).to eq 'value_3'
expect(csv[1][1]).to eq 'value_4'
#Vous pouvez également comparer ligne par ligne
expect(csv[0]).to eq ['value_1', 'value_2']
expect(csv[1]).to eq ['value_3', 'value_4']
end
Cela accélérera le test.
Dans les commentaires, je vous ai dit ce qu'on appelle CSV.table
!
it 'example' do
csv_content_path = Sample.csv_content.path
table = CSV.table(csv_content_path) #Passer le chemin
table.headers # => [:column_0, :column_1]
# [Nom de l'en-tête][numéro de ligne]
expect(table[:column_0][0]).to eq 'value_1'
expect(table[:column_0][1]).to eq 'value_2'
expect(table[:column_1][0]).to eq 'value_3'
expect(table[:column_1][1]).to eq 'value_4'
#Obtenir ligne par ligne
expect(table[0]).to eq ['value_1', 'value_2']
expect(table[1]).to eq ['value_3', 'value_4']
#Obtenir par colonne
expect(table[:column_0]).to eq ['value_1', 'value_3']
expect(table[:column_1]).to eq ['value_2', 'value_4']
end
Cela peut être plus facile à utiliser s'il est mis en œuvre. Il semble qu'il y ait plusieurs utilisations que vous pouvez obtenir en même temps pour chaque colonne.
Cependant, CSV.table doit transmettre le chemin du fichier, alors soyez prudent.
Lien de référence https://qiita.com/gotchane/items/e615fed15901aed6c18a https://melborne.github.io/2013/01/24/csv-table-method-is-awesome/ https://docs.ruby-lang.org/ja/latest/class/CSV=3a=3aTable.html
Recommended Posts