Spock
30/09/2015 12:26
1
Bom dia senhores,

Verificando o que o Spock nos fornece descobri a seguinte abordagem:

def "can you figure out what I'm up to?"() {
expect:
name.size() == length

where:
nam | length
"Mob" ? ? ?  | 6
"Kirk"  | ?4
"Spock" ? ? ? ?| ?5
"Scott ? ? ?| ?6
}


Então tentei implementar para preencher automaticamente meus parâmetros:


def "test validate fail because customer not found" () {

??expect:
???controller.validate()
println controller.response.contentAsString
def result = new XmlSlurper().parseText(controller.response.contentAsString )
println 'Return code: ' + result.returncode
result.returncode == false

where:

params.customerId | params.name | params.sharedSecret | params.ePortfolioUrl | params.validated
'1234' | 'test-customer1' | 'shared_secret' | 'url' | false
'1235' | 'test-customer2' | 'shared_secret' | 'url' | false
'1236' | 'test-customer3' | 'shared_secret' | 'url' | false
'1237' | 'test-customer4' | 'shared_secret' | 'url' | false
'1238' | 'test-customer5' | 'shared_secret' | 'url' | false
'1239' | 'test-customer6' | 'shared_secret' | 'url' | false
'1240' | 'test-customer7' | 'shared_secret' | 'url' | false
'1241' | 'test-customer8' | 'shared_secret' | 'url' | false
'1242' | 'test-customer9' | 'shared_secret' | 'url' | false
'1243' | 'test-customer10' | 'shared_secret' | 'url' | false
'1244' | 'test-customer11' | 'shared_secret' | 'url' | false
'1245' | 'test-customer12' | 'shared_secret' | 'url' | false
'1246' | 'test-customer13' | 'shared_secret' | 'url' | false
'1247' | 'test-customer14' | 'shared_secret' | 'url' | false
'1248' | 'test-customer15' | 'shared_secret' | 'url' | false
'1249' | 'test-customer16' | 'shared_secret' | 'url' | false
'1250' | 'test-customer17' | 'shared_secret' | 'url' | false
'1251' | 'test-customer18' | 'shared_secret' | 'url' | false
'1252' | 'test-customer19' | 'shared_secret' | 'url' | false
'1253' | 'test-customer20' | 'shared_secret' | 'url' | false

}



Eu não estou conseguindo usar o Data Table do Spock para preencher dinamicamente meus parâmetros, visto que meu método no controller utiliza como argumentos os parâmetros.
Alguém sabe como alterar dinamicamente os parâmetros para vários valores?
Tags: Data Table, Spock


1
Oi Diego, 
não sei se vai dar certo, mas tente o código similar ao abaixo:


expect:
     params.customerId = valorId
     params.name = nome
    controller.facaAlgo()
where:
   valorId    | nome
  '1234'       |  'quente'


1
Valeu Kico!
Não funcionou só setando dentro da estrutura (expect-where), então dei uma fuçada no Stackoverflow e encontrei essa implementação:

def "faca na caveira" () {
setup:
params.customerId = valorId
params.name = nome
params.sharedSecret = pass
params.ePortfolioUrl = url
params.validated = val

??when:
controller.validate()

then:
def result = new XmlSlurper().parseText(controller.response.contentAsString )
result.returncode == false

where:
valorId ? ?| ?nom ? | pass | url | val
'1234' ? ?| 'test-customer1' | 'shared_secret' | 'url' | false
'1235' | 'test-customer2' | 'shared_secret' | 'url' | false
'1236' ? ?| ?'test-customer3' | 'shared_secret' | 'url'
'1253' | 'test-customer20' | 'shared_secret' | 'url' | false

}


Agora funcionou...valeu pela força!
30/09/2015 13:37


0
Bacana!

Também costumo me enrolar com esta parte do Spock. Obrigado por ter nos mostrado a solução!



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto