在Grails中的Service类中模拟一个简单的方法

时间:2014-12-11 04:49:06

标签: unit-testing grails

我正在尝试模拟UserService类中的方法(passwordComplexityCheck)。

以下是我在测试类中进行模拟的内容

def userService
controller.userService=new UserService()

controller.userService=[passwordComplexityCheck:{def k->
   return true
}]

但这不起作用。

下面是UserService类和方法。

class UserService {
   //required declaration 
   ........
   public boolean passwordComplexityCheck(String password) {

      log.debug("Enter(Method) - passwordComplexityCheck()")

      if (password != null && password.trim() != "") {
         if (password.length() < grailsApplication.config.user.password.min.length) {
            return false
         }
         if (password == password.toLowerCase()) {
            return false
         }
         if (password == password.toUpperCase()) {
            return false
         }
         if (password.grep(~/\d+/).size == 0) {
            return false
         }
      } else {
         return false
      }
      return true
   }
}

我只需要以一种可以返回true或false的方式来模拟它。既然这个方法有争论,那么嘲讽会有所不同吗?在服务中模拟方法的一般方法是什么?

1 个答案:

答案 0 :(得分:1)

为了使Grails中的内置日志记录在测试期间正常工作,您将不得不模拟日志记录功能。为此,您希望在测试类中包含以下代码。在调用任何代码之前,最好的位置是setUp()方法。

mockLogging(UserService, true)

请参阅:http://grails.org/doc/latest/api/grails/test/GrailsUnitTestCase.html#mockLogging%28java.lang.Class,%20boolean%29