1. MasamiKumazawa

    Posted

    MasamiKumazawa
Changes in title
+Rails5.0.1で非同期(Ajax)のテストの書き方が変更されたようなので、メモ。
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,37 @@
+
+Railsで非同期処理のテストをしようとしたところ、google先生を頼りに
+
+railsu```Ruby
+xhr :patch, race_path(@race), race: { nickname: new_name }
+```
+
+と書いたら、
+
+```Bash
+DEPRECATION WARNING: `xhr` and `xml_http_request` are deprecated and will be removed in Rails 5.1.
+Switch to e.g. `post comments_path, params: { comment: { body: 'Honey bunny' } }, xhr: true`.
+```
+
+とか怒られたので、言われるがままに
+
+```Ruby
+patch race_path(@race), params: { race: { nickname: new_name } }、:xhr => true'
+```
+
+としてみたところ、テストが通るようになった。
+
+でも、これでは黒魔術っぽいので、
+
+```ruby
+patch( race_path(@race), {'xhr' => true, 'params' => { 'race' => { 'nickname' => new_name } } }
+```
+
+とか書くと余計解り辛い?
+patchメソッドに渡す引数は二つ、URLとHashの二つ、URLは`race_path(@race) => /race/` で、Hashは`hash => {:xhr,:params}`から構成されていている。
+Hashの最初の項目、xhrのtrueは一目瞭然。
+
+次のparamsと言うHashはraceと言うHashを持っていって、raceというHashは`nickname: new_name`という構成になってすよと。
+
+解り辛ぇ(^^;
+
+xhrを最初に持ってきたら、なんか読みやすくなった気はするれど、Hashの階層深くね?