有没有办法使用公共URL在Rspec中测试文件上传?

时间:2013-12-24 05:53:24

标签: ruby-on-rails ruby testing rspec

我是Spec的新手,我想知道是否有可能测试文件上传而不实际将文件放在我们的公共文件夹中。上传后,我将文件保存到S3。目前我有这个代码。

file = ActionController::TestUploadedFile.new('./spec/fixtures/files/IMG_8880.jpg')
attach["attachment#{i+1}"] = file
attachment_in["attachment#{i+1}"] = {:filename => "IMG_8880.jpg", 
                                     :name => "IMG_8880.jpg", 
                                     :type => 'image/jpeg'}

我使用的是rails 2.3.8,因此fixture_file_upload不可用。我希望有一种方法可以避免我的fixtures文件夹中的图像文件并从某个URL获取它。

1 个答案:

答案 0 :(得分:0)

我觉得你需要在这种情况下使用Mocking和Stubbing。

你想测试一下;

ActionController::TestUploadedFile.should_recieve(:new).with('SOME_MOCK_OBJECT')

你可以设置 SOME_MOCK_OBEJCT通过

SOME_MOCK_OBJECT = double 'SOME_MOCK_OBJECT'

您需要查看Stubbing和Mocking,这是一个很好的video,或者您可以尝试Code Schools Rspec。