Skip to content
julho 11, 2009 / cassiomarques

Verificando atributos dos elementos da página com Webrat

Algumas vezes você vai precisar verificar os atributos dos elementos html de uma página da sua aplicação com Cucumber + Webrat. Seria uma forma menos problemática de fazer testes de view, ao invés de usar o Rspec para isso (eu definitivamente não testo views com o Rspec e não aconselho ninguém a fazê-lo).

O Webrat é capaz de localizar seus elementos na view das seguintes formas: a partir de seu id, a partir do valor de atributo name, por uma string xpath ou pelo label que indica o elemento na página. Eu gosto bastante de usar a última opção, pois torna os testes mais legíveis. Quando este elemento é encontrado na página, o Webrat o retornará e então poderemos fazer certas verificações sobre ele, incluindo analisar os valores de seus atributos.

Por exemplo, podemos verificar se um campo de um formulário está desabilitado (ou seja, se o atributo ‘disabled’ está presente)

 
Then /^the field "([^\"]*)" should be disabled$/ do |label|
  field_labeled(label).element.attribute('disabled').to_s.should == "disabled"
end

O método field_labeled encontra um elemento a partir de seu label. Sobre este elemento podemos verificar o hash attributes, o qual guarda o valor de todos os atributos presentes na tag html em questão.

3 Comentários

Deixe um comentário
  1. Carlos A. da Silva / jul 11 2009 4:08 pm

    Cássio,

    muito bom seu post, ainda estou caminhando com o Cucumber e Webrat e dicas assim são super importantes.

    Quanto aos testes de views com Rspec, porque você acha que não é bom utilizá-los?

    Abraços.
    Carlos.

    • cassiomarques / jul 11 2009 4:12 pm

      Olá Carlos,

      Eu não gosto de testar views com o Rspec porque neste tipo de teste não é necessário ir ao banco, uma vez que não é este o objetivo do teste, além de tornar os testes mais lentos sem necessidade. Assim, pra podermos testar precisamos utilizar mocks e/ou stubs muito intensamente e qualquer pequena alteração feita nas nossas views quebra os testes muito facilmente, ou seja, testes de view com Rspec são frágeis e de difícil manutenção.

      • Carlos A. da Silva / jul 11 2009 4:27 pm

        Cássio,

        muito interessante ter a certeza disto que você falou, tenho comprovado que realmente os testes de view são de difícil manutenção. Estou trabalhando num novo projeto a cerca de 1 mês e aproveitei para iniciar os testes de views com ele, visto que não usava essa parte antes com Rspec. E realmente os testes se tornam bastante quebradiços e fracos, como você comentou, por causa da necessidade de usar muitos mocks/stubs.
        Vou analisar a possibilidade de remover essa parte de testes de views.

        Valeu Cássio, obrigado.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: