2011-06-22 32 views
1

我使用Rspec在我的Controller规范中测试视图的内容。我试图测试所有Product条目在页面上显示的描述。针对内容的rspec测试

describe StoreController do 
    render_views 

    describe "GET 'index'" do 

    before(:each) do 
     get :index 
    end 

    it "should display the product list" do 
     Product.all.each do |product| 
     response.should have_selector("p", :content => product.description) 
     end 
    end 

    end 
end 

但是,这似乎并不奏效,因为无论视图中有什么内容,测试都会通过。 Rails仍然很新,所以很可能我在这里做了一些完全错误的事情。如何在StoreController索引视图中对每个产品描述进行代码测试?

回答

0

我想通了。问题是我的测试数据库没有填充任何Products,所以each块永远不会执行。通过使用Factory Girl来确定测试数据库中是否有数据。

4

就我个人而言,我不会在控制器中测试视图的内容。我只是测试控制器动作和任何支持方法的输出输出。我会将视图相关测试放入视图规范中。

如果你看看由rails生成的那些,你应该看到一些如何在那里声明内容的例子。

+0

我目前正在关注Michael Hartl的Rails教程中有关在您的控制器规范中测试您的视图的建议,但我可能会尝试接下来查看规范。 –

+1

他有一本书,一个教程和其他东西。我只得到了我,但我总是以我的测试为基础,尽可能地细化细节,MVC模型中已经定义了一个合理的分隔。但是,对于每个人自己:)只要你得到你的测试覆盖率,这都是druthers的问题... – jaydel