Hi guys,
I tried reading up the RSPEC Book (Dec 2010) and googled a bit but I
could not find anything.
I'm using Rspec2.
Example:
spec/factories/categories.rb
======================
FactoryGirl.define do
factory :category_intakes, :class => 'category' do
name 'intakes and filters'
description 'airfilters and etc.'
created_by 1
updated_by 1
end
factory :category_audio, :class => 'category' do
name 'audio'
description 'in car entertainment'
created_by 1
updated_by 1
end
end
spec/views/categories/index.html.erb
=============================
require 'spec_helper'
describe "categories/index.html.erb" do
before(:each) do
assign( :categories, [
FactoryGirl.create(:category_intakes),
FactoryGirl.create(:category_audio),
]
)
end
it "renders a list of categories" do
render
assert_select "tr>td", :text => "intakes and filters".to_s, :count
=> 1
assert_select "tr>td", :text => "audio".to_s, :count => 1
end
end
I noticed that the index view spec above passes but when I change the
count to 2, it fails saying that only 1 element is expected.
Question:
1) what does :count actually mean? Does it mean the total number of
fixture objects expected?
2) does the ordering of the rendered fixture items matter
( ie. :category_audio is expected before :category_intakes)?
on 2011-11-18 17:45
on 2011-11-18 18:26
I think i answered my own question. :count refers to the number of
fixture
objects.
The reason why :count => 2 was passing for views index specs is because
2
objects are being mocked and they are identical.
Hence, there are 2 stock tests:
1) asserts that there are 2 <td> elements which have the name of 'Name'
2) asserts that there are 2 <td> elements which have the name of
'Description'
This is what a stock view index spec looks like:
---- Stock index spec view ----
describe "makes/index.html.erb" do
before(:each) do
assign(:makes, [
stub_model(Make,
:name => "Name",
:description => "Description",
:created_by => "",
:updated_by => ""
),
stub_model(Make,
:name => "Name",
:description => "Description",
:created_by => "",
:updated_by => ""
)
])
end
it "renders a list of makes" do
render
# Run the generator again with the --webrat flag if you want to use
webrat matchers
assert_select "tr>td", :text => "Name".to_s, :count => 2
# Run the generator again with the --webrat flag if you want to use
webrat matchers
assert_select "tr>td", :text => "Description".to_s, :count => 2
end
end
---- Stock index spec view ----
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.