1

バイナリファイルのアップロードとダウンロードをテストするための次のrspecコードがあります。'content-type'をチェックして、ファイルが正しくアップロードおよびダウンロードされていることを確認できます。しかし、以下に基づいてMD5を実行し、実際に同じファイルであることを確認するにはどうすればよいですか。

it "should upload a file" do
  file = Rack::Test::UploadedFile.new("./HelloWorld.bin", "application/octet-stream")
  json = {:md5sum => "0cd74c7a3cf2207ffd68d43177681e6b", :config => "./testconfig.yaml"}.to_json

  post "/upload", :json => json, :file => file
  last_response.should be_ok
  (JSON.parse(last_response.body)["status"]).should be_true
  (JSON.parse(last_response.body)["filename"]).should eq("HelloWorld.bin")
end

it "download a file successfully" do
  filename = "HelloWorld.bin"
  get '/download/' + filename
  last_response.should be_ok
  last_response.headers['Content-Type'].should eq "application/octet-stream"
end

'last_response.body'をget'/download'でバイナリファイルとして割り当てることはできますか?

4

1 に答える 1

0

last_response.body は文字列であるため、いつでも直接文字列に対して MD5 チェックサムを実行できます。

  (Digest::MD5.hexdigest(last_response.body)).should eq ("a1cba6369d668ed0ae5e97658c30979a")
于 2013-01-09T22:45:43.893 に答える