我特别喜欢Minitest,目前一切正常,因为不是很难学,但是,我坚持使用常规测试:测试将文件上传到S3的控制器。
目标:
进行测试,使用其文件创建一个新的Person.create()
对象,在这种情况下是带有一些图像的zip。
背景:
Person
带有一个带有Paperclip的file
字段及其S3配置。 我的问题是我在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
创建新人员。 我想我需要模拟和/或存根,但我不确定Minitest是怎么做的。
谢谢。
答案 0 :(得分:1)
您可能想要创建一个i 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
有关如何设置HTTP请求的期望,请参阅webmock documents,注意Test / Unit和Minitest是可互换的。