将数据表与交互相结合

时间:2017-10-02 22:21:12

标签: java groovy spock

有没有办法可以使用Spock的数据表验证交互?

def test(int a, String b) {

  expect:
  service.save(a)
  1 * repository.save({ 
      def test ->
        test.value == b
  })

  where:
  a  |  b
  1  |  "one"
  2  |  "two"
}

1 个答案:

答案 0 :(得分:3)

是的,以下示例完全正常:

import spock.lang.Specification

class LolSpec extends Specification {

    def 'lol'() {
        given:
        def repository = Mock(Repository)
        def service = new Service(repository: repository)

        when:
        service.save(a)

        then:
        1 * repository.save({ it ->
            it.value == b
        })

        where:
        a | b
        1 | "one"
        2 | "two"
    }

}

class Repository {
    def save(Entity e) {

    }
}

class Service {
    Repository repository

    def save(Integer value) {
        Entity e
        if (value == 1) {
            e = new Entity(value: "one")
        } else {
            e = new Entity(value: "two")
        }
        repository.save(e)
    }
}

class Entity {
    String value
}