def index() {
//println params
String params_key =params['key']
def c = get_value(params_key)
def resp = ['key': params_key, 'value':c]
render resp as JSON
}
private static hash_conv(String value)
{
def matches = Eval.me(value.replace(':','').replace('{','[').replace('=>',':').replace('#','//').replace('}',']'))
return matches
}
private get_value(String key, default_value=null){
def app_preferences = get_preferences()
def result = app_preferences[key]
if (result == null) {
result = default_value
}
return result
}
private get_preferences(Boolean mobile_app = false){
def all_app_preference = AppPreferences.all
def mapped_value = [:]
def all_app = all_app_preference.each{obj -> mapped_value << get_preference(obj)}
return mapped_value
}
private static get_preference(AppPreferences preference){
def value_type = preference.value_type.toLowerCase()
def val = value_type == 'integer' ? preference.value.toBigInteger() : (value_type == 'boolean' ? (preference.value == 'true' || preference.value == '1' ? true : false):(value_type == 'array' ? preference.value.split(',') : (value_type == 'hash' ? hash_conv(preference.value) :(value_type == 'json' ? new JsonSlurper().parseText(preference.value) : preference.value.toString()))))
def map_value = [:]
map_value[preference.preference_key] = val
return map_value
}
여기서는 AppPreferences 도메인을 사용하고 있습니다. 그것은 localhost.But에 어떤 가치를 반환합니다 내가 grails에서 그것을 테스트 할 때 Null을 반환합니다. 내 테스트 코드는 다음과 같이 다음 response.text가 null로 반환grails 테스트를 통해 컨트롤러의 도메인 클래스를 통해 db의 데이터에 액세스
@TestFor(AppPreferencesController)
@Mock([AppPreferences])
//controller.session.SPRING_SECURITY_CONTEXT = [authentication:[principal:[id: 'blah']]]
class AppPreferencesControllerSpec extends Specification {
def setup() {
}
def cleanup() {
}
/*void "test something"() {
expect:"fix me"
true == false
}*/
void test_for_index()
{
when:
controller.session.SPRING_SECURITY_CONTEXT = [authentication:[principal:[id: 'blah']]]
params.key = 'role_to_feature_map'
controller.index()
then:
1 == 1
2 == 2
println response.text
}
}
. 로컬 호스트에서 해시 값을 반환합니다. 아마도
테스트 설정 중에 AppPreferences가 어딘가에 채워지나요? 그렇지 않으면 어떤 데이터도 없을 것이고 null이 리턴됩니다. –
해당 항목이 채워지지 않습니다. 하지만 나는 grails에 처음 온거야. 어떻게해야하지? 나는 근검에서 가치를 취함으로써 그것을 행한다. –
설정()과 같이 할 수 있습니다. 새로운 AppPreferences (field1 : 'blah') .save (failOnError : true, flush : true) –