We are a software consultancy based in Berlin, Germany. We deliver
high quality web apps in short timespans.

Upstream Agile GmbH

Wir machen unseren Tests Beine

March 30, 2007 by alex

Da unsere vielen Tests mittlerweile ein wenig lange brauchen, haben wir uns am heutigen Forschungstag mal wieder mit dem Problem Testing auseinandergesetzt. Das Ergebniss diesmal schon vorne weg: unsere erfolgreichste Entdeckung ist Mocha. Mit diesem Framework lassen sich Stubs und Mocks mit realen Objekten verwenden. Es folgt ein kleiner Auszug aus unserem bisherigen Testcode.

def create_activated_user(attributes = {})
email = generate_email_address
User.create!({:gender => 'm', :first_name => 'joe', :last_name => 'doe', :email => email,
:password => 'test', :password_confirmation => 'test', :city => "berlin", :status => 'active'
}.merge(attributes))
end

def create_auto(user = nil, attributes = {})
user = create_user unless user
Auto.create!(auto_hash(user).merge(attributes))
end

def test_activity_returns35_for_user_with_picture_and_auto_with_picture
user = create_activated_user :photo => '1.gif'
create_auto user, :photo => '2.gif'
assert_equal(35, user.activity)
end

Dauer: 795ms

Nach kurzem Studium des Mocha Cheat Sheets haben wir dann den Test wie folgt geändert.

def test_activity_return35_for_user_with_picture_and_auto_with_picture
with_photos = stub :with_photos => [Auto.new(:photo =>'test.gif')]
user = User.new :photo => '1.gif'
user.stubs(:autos).returns(with_photos)
assert_equal(35, user.activity)
end

Dauer: 49ms

Na wenn das keine signifikate Verbesserung ist. Auf Mocha gestoßen sind wir über den Testing Rails Blog, auf dem leider nichts Neues mehr zu passieren scheint. Eine kleine Übersicht von Stub-Frameworks mit problemspezifischen Einschätzungen fanden wir auf dem Blog von Jay Fields.

Wir werden Mocha in der nächsten Zeit in unseren Test integrieren, und bei der 2000ten Revision sagen wir euch wie lange unsere Test Suite läuft.