demoiselle / behave

Demoiselle Behave
https://www.frameworkdemoiselle.gov.br/dbehave/
29 stars 53 forks source link

Alguma sugestão de melhoria para a frase "Então será exibido 'texto'" utilizando variáveis? #456

Open ThiagoNicolielo opened 7 years ago

ThiagoNicolielo commented 7 years ago

Olá,

Gostaria de saber se alguém tem alguma melhoria para a frase "Então será exbido 'texto'" para utilizar concatenação com textos variáveis.

Ex: "Então será exibido 'Página ' + paginaAtual + ' de ' + totalDePaginas

Se houver renderizado o texto "Página 2 de 7", por exemplo, seria possível então confirmar que foi exibido este texto dinâmico, para confirmar quando for clicado no botão de próxima página.

Não estou visualizando uma solução por envolver frases de história + texto fixo e também variáveis. Imagino soluções que não ficariam simples de se utilizar nas histórias, ex, envolvendo outros passos customizados para construir o texto a ser checado, por exemplo.

Se eu verificar a existência do termo "Página" e, depois, os termos "2", "de" e "7", isoladamente, isto não significa nada, já que estes textos podem estar contidos na página em outros locais.

Estou com a sensação que estou complicando algo que poderia ser simples. rs

juliancesar commented 7 years ago

Olá @ThiagoNicolielo, alguma evolução no problema? Obrigado pela colaboração.

ThiagoNicolielo commented 7 years ago

Não, por enquanto estou precisando utilizar frases para verificar os termos separadamente

Porém, neste exemplo, de verificar se um texto como 'Página ' + paginaAtual + ' de ' + totalDePaginas, está sendo renderizado, torna quase inútil a verificação separadamente, pois verificar se o valor de paginaAtual está sendo exibido, separadamente, é praticamente inútil, pois dariam falsos positivos.

Aguardo uma sugestão, caso alguém tenha.

Por ora isto não é prioritário, mas caso alguém possa compartilhar alguma solução para este caso, haverá então uma evolução para o problema.

Não me parece difícil, uma das maiores dificuldades, imagino, seria haver uma frase que se adaptasse à quantos termos fossem passados, ou seria necessário fazer frases para diferentes quantidades de parâmetros, o que não seria a melhor abordagem.

lucianojs commented 6 years ago

Senti necessidade disto também. No meu caso, comecei a criar entidades usando número randonico em campos como Sigla e Nome pois a aplicação tem verificação de dado repetido. Ao final tento excluir e a mensagem exibida é "Deseja realmente excluir a familia 'sigla_randonico - nome_randonico'?". Não consegui construir um verificador adequado para a mensagem.

juliancesar commented 6 years ago

@lucianojs, já tentou utilizar DataProvider para passar a variável de uma frase para outra?

Seguem exemplos:

// Seta o valor
dataProvider.put("nomeDaVariavel", "valorDaVariavel");
// Pega o valor
String variavel = (String) dataProvider.get("nomeDaVariavel");

Como é um número randômico pode gerar ele em uma frase customizada no início e depois usar o mesmo nome da variável nas frases (pre-definidas do dbehave) que vai funcionar pois sempre verificamos se antes existe uma variável com o nome, como por exemplos https://github.com/demoiselle/behave/blob/master/impl/parser/jbehave/src/main/java/br/gov/frameworkdemoiselle/behave/parser/jbehave/CommonSteps.java#L99.

Outra opção se não foram randômicos é utilizar Conjunto de Dados - http://demoiselle.sourceforge.net/docs/components/behave/reference/lastversion/html/behave-dados.html.