RSpec 测试索引视图和 will_paginate
RSpec test index view and will_paginate
我是 Ruby 测试的新手,为此我使用 Rspec & FactoryGirl。
我想测试我的索引视图,其中显然有一个 will_paginate
。
这是我的控制器:
def index
@products = Product.paginate(:page => params[:page], :per_page=>30)
respond_with(@products)
end
我对 will_paginate
和 table 的产品有一个基本的看法。
这是我的测试:
RSpec.describe "products/index", type: :view do
before(:each) do
@products = Array.new
31.times do
@products << FactoryGirl.create(:product)
end
assign(:products, @products)
end
it "renders a list of products" do
render
end
end
首先,创建一个数组,然后赋值是不是正确的做法?
如果我错了请纠正我,但是 assign(:products, @products)
相当于 @products = Product.paginate(:page => params[:page], :per_page=>30)
for test ?
我用这段代码绕过了我的问题:
RSpec.describe "products/index", type: :view do
before(:each) do
# Create a list of 31 products with FactoryGirl
assign(:products, create_list(:product, 31))
end
it "renders a list of products" do
allow(view).to receive_messages(:will_paginate => nil)
render
end
end
我愿意接受有关此解决方案的任何建议。
不,不一样。因为数组不同于 ActiveRecord::Relation 和 Relation methods(这就是 Product.paginate(:page => params[:page], :per_page=>30)
returns)。
也许是更好的方法,但这应该有效:
RSpec.describe "products/index", type: :view do
before(:each) do
@products = WillPaginate::Collection.new(4,10,0)
31.times do
@products << FactoryGirl.create(:product)
end
assign(:products, @products)
end
it "renders a list of products" do
render
end
end
这里@products = WillPaginate::Collection.new(4,10,0)
创建了一个集合,每页有4页,每页有10个元素。
我是 Ruby 测试的新手,为此我使用 Rspec & FactoryGirl。
我想测试我的索引视图,其中显然有一个 will_paginate
。
这是我的控制器:
def index
@products = Product.paginate(:page => params[:page], :per_page=>30)
respond_with(@products)
end
我对 will_paginate
和 table 的产品有一个基本的看法。
这是我的测试:
RSpec.describe "products/index", type: :view do
before(:each) do
@products = Array.new
31.times do
@products << FactoryGirl.create(:product)
end
assign(:products, @products)
end
it "renders a list of products" do
render
end
end
首先,创建一个数组,然后赋值是不是正确的做法?
如果我错了请纠正我,但是 assign(:products, @products)
相当于 @products = Product.paginate(:page => params[:page], :per_page=>30)
for test ?
我用这段代码绕过了我的问题:
RSpec.describe "products/index", type: :view do
before(:each) do
# Create a list of 31 products with FactoryGirl
assign(:products, create_list(:product, 31))
end
it "renders a list of products" do
allow(view).to receive_messages(:will_paginate => nil)
render
end
end
我愿意接受有关此解决方案的任何建议。
不,不一样。因为数组不同于 ActiveRecord::Relation 和 Relation methods(这就是 Product.paginate(:page => params[:page], :per_page=>30)
returns)。
也许是更好的方法,但这应该有效:
RSpec.describe "products/index", type: :view do
before(:each) do
@products = WillPaginate::Collection.new(4,10,0)
31.times do
@products << FactoryGirl.create(:product)
end
assign(:products, @products)
end
it "renders a list of products" do
render
end
end
这里@products = WillPaginate::Collection.new(4,10,0)
创建了一个集合,每页有4页,每页有10个元素。