1. topstone

    RSec → RSpec

    topstone
Changes in body
Source | HTML | Preview
@@ -1,38 +1,38 @@
タイトルの通りです。
-幾つかやり方はあるみたいですが、自分の環境下(WebMock+RSecでテスト。Paperclip+S3でファイルアップロード)では
+幾つかやり方はあるみたいですが、自分の環境下(WebMock+RSpecでテスト。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')
-`の記述は不要です。
+`の記述は不要です。