私は自分のReport
モデルを持っています:
class Report < ActiveRecord::Base
belongs_to :user
attr_accessible :ready_status, :document
mount_uploader :document, DocumentUploader
def attach( report_file )
self.update_attributes( :document => File.open( report_file ), :ready_status => true )
end
end
このモデルにはattach
メソッドがあり、ドキュメントやその他のパラメーターを保存するために使用します。ここで、この関数が機能することをテストしたいと思います。
/spec/models/report_spec.rb
# encoding: utf-8
require 'spec_helper'
describe Report do
before(:each) do
@user = User.make!
end
...
context "File's saving" do
before(:each) do
@report = @user.reports.create
@csv_report_file = "#{Rails.root}/spec/files/report.csv"
end
it "CSV should be saved" do
csv_report_filename = @csv_report_file.split("/").last
@report.attach @csv_report_file
@report.reload
@report.document.file.filename.should == csv_report_filename
end
end
end
ファイルを保存しようとすると、/spec/files
次のようなエラーが発生します。
Report File's saving CSV should be saved
Failure/Error: @report.document.file.filename.should == csv_report_filename
NoMethodError:
undefined method `filename' for nil:NilClass
しかし、別のフォルダー (たとえば) から別のファイルを試すと"#{Rails.root}/samples/my-report.csv"
、テストに合格します。
どうすれば修正できますか?