2016-05-16 57 views
1

我是Minitest的新成員,目前一切正常,因爲學習起來不是很難,但是我堅持使用常規測試:測試一個將文件上傳到S3的控制器。如何使用Ministest/TestCase超出控制器範圍來測試外部請求

目標: 有創建一個新的Person.create()對象與其文件,在這種情況下是一些圖像的壓縮測試。

語境:

  • 我已經與file場回形針及其S3配置的模型Person
  • 我有各種測試文件(在測試/模型&測試/控制器當然),但在另一個文件夾,因爲我測試其他類使用Person對象來更新它的一個測試文件。

我的問題是,我已經嘗試了很多搜索Google和StackOverflow的方法,但我不知道如何解決這個測試超出Controller範圍。

require 'test_helper' 
    require 'webmock/minitest' 

    class PersonPhotosUpdateTest < ActiveSupport::TestCase 
    def setup 
     # some setup here 
    end 

    describe "My tests" do 
     test "Upload a zip file for Person" do 
     # My test here 
     end 
    end 
    end 

我想在我的測試:

  • post :create創建新的聯繫人。
  • 應該創建人與文件上傳到S3關聯。
  • 斷言該文件已上傳到S3。

我想我需要模擬和/或存根,但我不知道如何與Minitest。

謝謝。

回答

0

您可能希望創建一個我ntegration test

require 'test_helper' 
require 'webmock/minitest' 

class LocationImporterTest < ActionDispatch::IntegrationTest 
    before do 
    stub_request(:any, "https://s3.amazonaws.com") 
    end 

    test "create" do 
    post "/foo", { 
     # params... 
    } 

    assert_requested :post, "https://s3.amazonaws.com", 
     :headers => {'Content-Length' => 3}, 
     :body => "abc", 
     :times => 1 # ===> Success 
    end 
end 

webmock documents對HTTP請求組的期望如何,請注意,測試/股和MINITEST是可以互換的。

相關問題