Spock Mock Cheatsheet

Spock Mock Cheatsheet

Craig Atkinson

Executable examples at github.com/craigatk/spockmockcheatsheet

 

Creating mocks

UserService userService = Mock()

def userService = Mock(UserService)

 

Argument matching

userService.createUser(email, name) >> user

userService.sendWelcomeEmail({ User u >

u.email == email && u.name == name })

userService.createUser(_ as String, _ as String) >> user

userService.createUser(_, _) >> user

 

Verify method call number

1 * userService.createUser(email, name) >> user

1 * userService.sendWelcomeEmail(user)

0 * _

 

Use method arguments in return value

userService.createUser(email, name) >> { String e, String n >

new User(email: e, name: n)

}

 

Throw exception from method

userService.sendWelcomeEmail(user) >> { throw new IllegalStateException() }

 

Mock definition outside of test spec

interaction {

userCreationMocks(email, name)

}

 

private void userCreationMocks(String email, String name) {

User user = new User()

1 * userService.createUser(email, name) >> user

1 * userService.sendWelcomeEmail(user)

}

 

1 * subscriber.receive("hello")     // an argument that is equal to the String "hello"
1 * subscriber.receive(!"hello")    // an argument that is unequal to the String "hello"
1 * subscriber.receive()            // the empty argument list (would never match in our example)
1 * subscriber.receive(_)           // any single argument (including null)
1 * subscriber.receive(*_)          // any argument list (including the empty argument list)
1 * subscriber.receive(!null)       // any non-null argument
1 * subscriber.receive(_ as String) // any non-null argument that is-a String
1 * subscriber.receive({ it.size() > 3 }) // an argument that satisfies the given predicate
                                          // (here: message length is greater than 3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值