2014-04-08 22 views
0
FakeFS::File.should_receive(:chmod) 

它是做什麼用的?參考http://www.zlu.me/mocking/rails/rspec/carrierwave/fog/s3/2012/07/17/testing-carrierwave-with-fog.htmlFakeFS :: File.should_receive(:chmod)是做什麼的?

FULL SPEC:

class TestFileUploader 
    mount_uploader :file, FileUploader 
end 

describe FileUploader do 
    include FakeFS::SpecHelpers 

    context 'for non-production environment' do 
    it 'should upload video clip to dev-bucket on s3' do 
     FakeFS.activate! 
     FakeFS::File.should_receive(:chmod) #this is needed or you will get an exception 
     File.open('test_file', 'w') do |f| 
     f.puts('foo') # this is required or uploader_test.file.url will be nil 
     end 
     uploader_test = TestFileUploader.new 
     uploader_test.file = File.open('test_file') 
     uploader_test.save! 
     uploader_test.file.url.should match /.*\/dev-bucket.*/ #test to make sure that it is not production-bucket 
     FakeFS.deactivate! 
    end 
    end 
end 

回答

3

它說,特定的階層,FakeFS::File,特定it的過程中,應該有.chmod方法調用它。

因此,只要在某一時刻代碼的功能:

FakeFS::File.chmod 

那麼這種預期會滿意。這是確保某些代碼被調用或忽略某些代碼的好方法。

例如,如果FakeFS::File.chmod需要很長時間才能執行,或者需要很多代碼設置,那麼您可以添加此預期。

請參閱:https://www.relishapp.com/rspec/rspec-mocks/v/3-0/docs/message-expectations/expect-message-using-should-receive