2011-04-22 7 views
0

Je soupçonne que je suis juste très bête avec cela et manquant quelque chose d'évident. Mais je suis assez nouveau pour rspec et usine fille et ne peut pas obtenir ce test simple pour travailler.Rspec contrôleur test avec usine fille

Fondamentalement, j'ai mis en place un modèle appelé la page et je appelle dans le contrôleur comme ceci:

@pages = Page.where(:page_type => "homepage").limit(2) 

dans mon test, je fais ce qui suit:

before do 
    @pages = [Factory(:page), Factory(:page, :title=> "Contact", :content=>"contact content", :meta=>"meta content", :page_type=>'homepage') ] 
    get 'index' 
end 

it 'should set the pages variable' do 
    assigns[:pages].should_not be_nil 
    assigns[:pages].length == 2; 
end 

encore tout ce que je reçois est:

Failure/Error: assigns[:pages].should_not be_nil 
expected not nil, got nil 

d'aide grandement appréciée

+0

Cela ne devrait-il pas être avant (: each) do, ou est-ce une faute de frappe? – zetetic

+0

Eh bien, il est dit que vous pouvez faire soit dans le livre rspec2, c'est soit une suspension de rspec1 ou juste pour l'exécuter avant chaque test ou non. De toute façon, cela n'a pas aidé, mais merci! –

+0

est-ce que 'affecte (: pages)' fonctionne? – zetetic

Répondre

0

Votre contrôleur définit sa variable d'instance @pages sur zéro. Très probablement, il n'est pas affecté du tout. Êtes-vous sûr l'extrait de code que vous collé:

@pages = Page.where(:page_type => "homepage").limit(2) 

est appelé dans l'action index de votre contrôleur? Si tel est le cas, ce code définirait @pages sur la liste vide, non nul.

Questions connexes