代码之家  ›  专栏  ›  技术社区  ›  shinjw

将数据表与交互相结合

  •  1
  • shinjw  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  3
  •   Opal    7 年前

    是的,下面的例子非常好用:

    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
    }