Pergunta

Como faço para enviar um cookie em um teste funcional? Como faço para testar para ter certeza de que o cookie é apagado?

Eu tive grande sucesso usando TDD para construir os modelos para uma aplicação Rails, mas ter atingido um obstáculo em relação às provas controlador: eu posso definir valores de cookies de vez em teste e lê-los, mas não posso clara eles. Ou seja:

test "clears cookie" do
  get :set_it, :stuff => {'key' => 'value'} # stuff to cookify
  assert cookies['key'] == 'value' # works fine

  get :clear_it # cookie doesn't get sent. How do I simulate this?
  assert nil == cookies['key'], 'Cookie not cleared' # fails
end

Será que a trilhos de teste guia não mencionar como simular o envio de um cookie em um teste, assim como verificar se os dados foram definidas no servidor. Eu sei que eu correr em uma situação antes onde os dados de cookie não é alterada no servidor até que a resposta seja enviada. É isso o que está acontecendo aqui? Eu esperava sorta que os testes funcionais teria feito um trabalho melhor de 'ser o cliente.'

Isso é um amplamente sei questão? As pessoas estão simplesmente renunciando-se a usar JUnit para este tipo de coisa? Eu realmente gostaria de ser capaz de usar um quadro para o todas ou quase todas do meu TDD.


desespero Sheer e conjecturas me levou a tentar otimista @ Response.Cookies, mas isso não quer trabalhar.

Foi útil?

Solução

Se você quiser ter um teste de unidade especificamente em torno da desactivação de um cookie, então você está testando na verdade, se a resposta contém um cabeçalho que define o cookie para nada. Eu estou assumindo que o seu get :clear_it está fazendo cookies.delete :cookie-name . Isso define response.header para conter Set-[COOKIE-NAME]=;. Então, se outros métodos estão falhando, você pode simplesmente olhar para essa string diretamente.

O que parece suspeito em seu código é que você está apenas verificando cookies diretamente. Onde está o movimento resposta do seu 'get' pedido?

Se tudo isso se não, você também pode usar os testes de integração com webrat como discutido aqui . Isto pode não ser tão grande como o teste de unidade, mas isso irá, pelo menos, verificar a funcionalidade.

Outras dicas

Meu teste de logout tinha

assert_nil @response.cookies["auth_token"]

que funciona.

Qual o valor que você está recebendo, se não nulo?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top