Mocking
// 測(cè)試類
UserService userService = new UserService()
// mock 類
def userDao = Mock(UserDao)
// inject mock
userService.userDao = userDao
Stubing
// toNothing 不 stub
// stub 返回值
userDao.get(_) >> user
// stub 方法異常
userDao.get(_) >> { throw new InternalError("ouch") }
// 多次調(diào)用不同處理
// 第一次調(diào)用時(shí)返回 user1, 第二次返回 user2
userDao.get(_) >>> {user1, user2}
Assertion
// assert value
when:
def resutl = userService.getUser("user-id")
then:
result.id == "user-id"
// assert invocation times
when:
def result = userService.getUser("user-id")
then:
1* userDao.get(_)
// assert mock method paramter
when:
def result = userService.getUser("user-id")
then:
1* userDao.get( {user.id == "user-id";
user.name = "user-name"})
// assert exception
when:
userService.getUser("user-id")
then:
def e = throw(InternalError)
e.message = "ouch"
maven -T