Screencast: Zeit und Web-Anfragen testen/messen

Zeitmessungen mit der aktuellen Zeit und Anfragen an ggf. externe Seiten sind nicht ganz einfach. In diesem Screencast zeigt Ryan wie er solche Tests mit Timecop und FakeWeb durchführt.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

Gemfile

[ruby]
group :test do
gem "timecop"
gem "fakeweb"
end
[/ruby]

spec_helper.rb

[ruby]
FakeWeb.allow_net_connect = false RSpec.configure do |config|
config.before(:each) do
Timecop.return FakeWeb.clean_registry
end
end
[/ruby]

user_spec.rb

[ruby]
it "saves the time the password reset was sent" do
Timecop.freeze user.send_password_reset Time.use_zone("Paris") do
user.reload.password_reset_sent_at.should eq(Time.zone.now)
end
end
[/ruby]

web_request_spec.rb

[ruby]
it "fetches the content length" do
FakeWeb.register_uri(:head, "http://example.com/", :content_length => 123) WebRequest.new(:url =>"http://example.com/").content_length.should eq(123)
end
[/ruby]

models/web_request.rb

[ruby]
def content_length uri = URI.parse(url)
response = Net::HTTP.start(uri.host, uri.port) { |http| http.request_head(uri.path) }
response["content-length"].to_i
end
[/ruby]

config/application.rb

[ruby]
require ’net/http‘
[/ruby]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.