Mudança no RSpec 1.1.4 remove inclusão automática de módulos
Leia em menos de um minuto
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.