从spock mock执行回调

时间:2016-10-13 10:54:59

标签: java unit-testing groovy mocking spock

我正在使用Java编写Groovy Spock应用程序进行测试。在控制器中,我想测试实用程序功能中发生的事情 实用程序函数接受String和2个回调(Consumer) 模拟效用函数,我该如何执行其中一个回调?

爪哇

public void authenticate(String token, Consumer<User> success, Consumer<Throwable> failure)

Groovy的

def "..."(){
  given:
  TokenHandler th = Mock()
  // execute the failure callback
  th.authenticate(_) >> { token, success, failure -> failure.accept() }
}

1 个答案:

答案 0 :(得分:0)

模拟的初始化是错误的,请参阅以下初始化:

Consumer<User> successConsumer = new Consumer<User>()
Consumer<Throwable> failureConsumer = new Consumer<Throwable>()

TokenHandler tokenHandlerMock = Mock(TokenHandler){
    th.authenticate(_) >> [token, successConsumer, failureConsumer]
}