2012-04-10 7 views
3

sah ich ein Beispiel, in ROR für einige Domain-Klasse zu testen:Kann ich das mit Spock machen?

context "Validations" do 
    [:city, :zip, :street].each do |attr| 
     it "must have a #{attr}" do 
     a = Address.new 
     a.should_not be_valid 
     a.errors.on(attr).should_not be_nil 
     end 
    end 
end 

Es schafft Tests im laufenden Betrieb mit unterschiedlichen Werten eine andere Namen ... Es ist irgendwie interessant, aber ... kann ich das mit spock oder jUnit?

Vielen Dank

Antwort

6

Mit Spock:

class Validations extends Specification { 
    def "must have a #attr"() { 
     def a = new Address() 

     expect: 
     !a.valid 
     a.errors.on(attr) != null 

     where: 
     attr << ["city", "zip", "street"] 
    } 
} 

Wenn es mehr als eine Datenvariable ist, Tabellensyntax ist bequemer:

 ... 
     where: 
     attr1 | attr2 
     "city" | ... 
     "zip" | ... 
     "street" | ... 
+0

Vielen Dank! Sehr kurze und nützliche Antwort! ;-) Grüße – mpccolorado