発生した章
13.2.3 プロフィール画面のマイクロポストをテストするにて、リスト 13.27: ユーザーと関連付けされたマイクロポストのfixtureの内容を修正したら、テストでエラーが出るようになった。
発生したエラー内容
ERROR["test_should_redirect_edit_when_not_logged_in", UsersControllerTest, 3.9885445390827954]
test_should_redirect_edit_when_not_logged_in#UsersControllerTest (3.99s)
ActiveRecord::Fixture::FormatError: ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/ubuntu/workspace/sample_app/test/fixtures/microposts.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
Psych::SyntaxError: (<unknown>): could not find expected ':' while scanning a simple key at line 24 column 1
原因
ymlファイル内の属性に:がないため。
今回の原因
micropost_<%= n %>
に、:がついていない
/sample_app/test/fixtures/microposts.yml
<% 30.times do |n| %>
micropost_<%= n %>
content: <%= Faker::Lorem.sentence(5) %>
created_at: <%= 42.days.ago %>
user: michael
<% end %>
修正方法
micropost_<%= n %>
に、:をつける
/sample_app/test/fixtures/microposts.yml
<% 30.times do |n| %>
micropost_<%= n %>:
無事にエラーが解決しました。