合計Rspecnoobはこちら。今夜私の最初のテストを書きます。
Imageというモデルがあります。ペーパークリップを使って、写真というファイルを添付します。標準的なもの。私はペーパークリップジェネレーターを実行しましたが、プロダクションモードとテストモードではすべて正常に動作します。
これで、image.rbというスペックファイルができました。これは次のようになります(ryanbのnifty_scaffoldジェネレーターによって作成されました)。
require File.dirname(__FILE__) + '/../spec_helper'
describe Image do
it "should be valid" do
Image.new.should be_valid
end
end
このテストは失敗し、モデルの検証(つまり、validates_attachment_presence)が原因であることがわかりました。
私が得るエラーは次のとおりです。
Errors: Photo file name must be set., Photo file size file size must be between 0 and 1048576 bytes., Photo content type is not included in the list
では、テストの実行時に写真をアップロードするようにrspecに指示するにはどうすればよいですか?
私はそれが備品と関係があると推測しています....多分そうではありません。私は彼らと遊んでみましたが、運がありませんでした。記録のために、フィクスチャフォルダ内にimagesというフォルダを作成しました。テストで使用する2つのファイルは、rails.pngとgrid.pngという名前です)
私は次のことを試みました:
it "should be valid" do
image = Image.new :photo => fixture_file_upload('images/rails.png', 'image/png').should be_valid
# I've also tried adding stuff like this
#image.stub!(:has_attached_file).with(:photo).and_return( true )
#image.stub!(:save_attached_files).and_return true
#image.save.should be_true
end
しかし、rspecは「fixture_file_upload」が認識されないことについて不平を言っています...私はそのRspec本を手に入れることを計画しています。そして、私は答えを求めてネットをトロールしましたが、何も見つからないようです。モデルから検証を削除すると、テストデータベースにいくつかのデータが入力されるため、一部のデータは正常に機能することがわかります。
前もって感謝します、
編集:
images.ymlは次のようになります。
one:
name: MyString
description: MyString
two:
name: MyString
description: MyString