3

我在 ROR 中看到了一个用于测试某些域类的示例:

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

它使用不同的值和不同的名称动态创建测试......这很有趣,但是......我可以用 spock 或 jUnit 来做这件事吗?

非常感谢

4

1 回答 1

6

使用斯波克:

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"]
    }
}

如果有多个数据变量,表格语法更方便:

        ...
        where:
        attr1    | attr2
        "city"   | ...
        "zip"    | ...
        "street" | ...
于 2012-04-10T22:55:05.120 回答