No RSpec 1.1.4, a inclusão de módulos deixou de ser automática. Você só irá perceber esta mudança se está testando algum módulo, como é o caso dos helpers.

Antes, você só precisava fazer algo como isto:

describe ApplicationHelper do
  it "should render flash[:notice]" do
    flash[:notice] = "Some notice"
    flash_messages.should have_tag('p.notice', 'Some notice')
  end
end

Nesta nova versão, se você tentar testar o método flash_messages, irá receber uma mensagem de aviso: Modules will no longer be automatically included in RSpec version 1.1.4. Called from ./spec/helpers/application_helper_spec.rb:6

A solução é fazer a inclusão manual dos módulos, como este exemplo

describe ApplicationHelper do
  include ApplicationHelper
 
  it "should render flash[:notice]" do
    flash[:notice] = "Some notice"
    flash_messages.should have_tag('p.notice', 'Some notice')
  end
end

ou utilizar o objeto helper, que possui todos os métodos do módulo especificado em describe

describe ApplicationHelper do
  it "should render flash[:notice]" do
    flash[:notice] = "Some notice"
    helper.flash_messages.should have_tag('p.notice', 'Some notice')
  end
end

Em um primeiro momento, eu não tinha gostado nem um pouco desta alteração, mas depois de ler os motivos, acho que ficou muito melhor. Você teria dúvidas de que está testando um helper se utilizar helper.flash_messages? E se você tivesse um módulo com um método describe? As respostas já justificam a alteração por si sós.

Comentários #

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

JavaScript Avançado

O JavaScript é a única linguagem que muitos acreditam saber sem nunca terem parado para realmente aprendê-la. Neste workshop rápido você entenderá de verdade todos os conceitos avançados do JavaScript em 4 horas puramente práticas.

Saiba mais Fechar

Conheça também o HOWTO