1. foloinfo

    No comment

    foloinfo
Changes in body
Source | HTML | Preview
@@ -1,23 +1,38 @@
タイトルの通りです。
幾つかやり方はあるみたいですが、自分の環境下(WebMock+RSecでテスト。Paperclip+S3でファイルアップロード)では
```rb
AWS.config(:access_key_id => "TESTKEY", :secret_access_key => "TESTSECRET", :stub_requests => true)
Image.any_instance.stub(:save_attached_files).and_return(true)
@image = fixture_file_upload('/files/test.gif', 'image/gif')
```
で可能になりました。
+追記:この記述はコントローラー向けです。下にモデルでテストを書く時の記述をしています。
テスト用のファイルは`spec/fixtures/files/`以下に置きます。
`Image`は利用しているファイルを所有するモデルです。
後は`@image`を適当な所で使えばおkです。
`AWS`の設定部分が記述されていないと
```rb
WebMock::NetConnectNotAllowedError:
Real HTTP connections are disabled. Unregistered request: PUT https://...
```
-となってしまいました。
+となってしまいました。
+
+## 追記
+`fixture_file_upload`はモデルのテストを行う時利用できませんでした。
+ので
+
+```rb
+stub_request(:get, "http://example.com/image.gif").
+ with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
+ to_return(:status => 200, :body => File.read('spec/fixtures/image.gif'), :headers => {"Content-Type" => 'image/gif'})
+```
+
+と`webmock`の時点でファイルを読みこませればOKです。
+その際`@image = fixture_file_upload('/files/test.gif', 'image/gif')
+`の記述は不要です。
+