У меня есть несколько часто используемых вспомогательных методов для модульных тестов, помещенных в отдельный файл. Идея состоит в том, чтобы, например, разрешить моему XYZTests.groovy вызывать TestHelper.getUserObject (), чтобы получить полностью инициализированный экземпляр User.
Теперь проблема в том, что существует springSecurityService.encodePassword (pw )
вызывается в beforeInsert ()
пользователя, что всегда дает сбой, так как нет макета для springSecurityService в TestHelper.groovy.
java.lang.NullPointerException: Cannot invoke method encodePassword() on null object
В User.groovy ]:
def beforeInsert() {
// ...
password = springSecurityService.encodePassword(pw)
// ...
}
Примечание: я бы хотел избежать насмешек над в TestHelper.groovy, чтобы использовать его методы и в интеграционных тестах.
Несмотря на это, даже если ] Я пытаюсь вызвать mockFor ()
в любом месте TestHelper.groovy, я получаю MME:
No signature of method: static myproject.TestHelper.mockFor() is applicable for argument types: (java.lang.Class, java.lang.Boolean) values: [class grails.plugins.springsecurity.SpringSecurityService, true]
groovy.lang.MissingMethodException: No signature of method: static myproject.TestHelper.mockFor() is applicable for argument types: (java.lang.Class, java.lang.Boolean) values: [class grails.plugins.springsecurity.SpringSecurityService, true]
at myproject.TestHelper.mockSpringSecurityService(TestHelper.groovy:59)
at myproject.TestHelper$mockSpringSecurityService.callStatic(Unknown Source)
at myproject.TestHelper.getUserObject(TestHelper.groovy:47)
at myproject.TestHelper$getUserObject.call(Unknown Source)
at myproject.UserTests.setUp(UserTests.groovy:26)
Примечание:
если (is_array ($ v)) {$ a = $ v;
} еще {$ a [] = $ v;
} Как это можно сделать в большем количестве ... У меня есть переменная $ v, которая может быть одной строкой или массивом строк Как это можно сделать более элегантно путь? (другими словами, как преобразовать переменную в массив)
, и у меня есть код: $a = array();
if (is_array($v)) {
$a = $v;
} else {
$a[] = $v;
}