Właśnie się męczę z rspec2. Od godziny szukam jakiś dokumentacji i próbuje zrobić najprostsze rzeczy i nie ogarniam nic a nic:
describe Category do
it {should have_many :feeds}
it {should validate_presence_of :name}
end
co daje:
[quote]) Category
Failure/Error: it {should have_many :feeds}
undefined method has_many?' for #<Category id: nil, name: nil> # /home/piotrek/.rvm/gems/ruby-1.9.1-p378/gems/activemodel-3.0.0.beta3/lib/active_model/attribute_methods.rb:358:in
method_missing’
# /home/piotrek/.rvm/gems/ruby-1.9.1-p378/gems/activerecord-3.0.0.beta3/lib/active_record/attribute_methods.rb:36:in method_missing' # /home/piotrek/.rvm/gems/ruby-1.9.1-p378/gems/activerecord-3.0.0.beta3/lib/active_record/attribute_methods.rb:34:in
method_missing’
# ./spec/models/category_spec.rb:4:in `block (2 levels) in <top (required)>’
- Category
Failure/Error: it {should validate_presence_of :name}
undefined method `validate_presence_of’ for #<RSpec::Core::ExampleGroup::Nested_1:0xaa6c814 @__memoized={}>
./spec/models/category_spec.rb:5:in `block (2 levels) in <top (required)>’
Finished in 0.01076 seconds
2 examples, 2 failures[/quote]
[quote=Piotr Misiurek]Właśnie się męczę z rspec2. Od godziny szukam jakiś dokumentacji i próbuje zrobić najprostsze rzeczy i nie ogarniam nic a nic:
describe Category do
it {should have_many :feeds}
it {should validate_presence_of :name}
end
[/quote]
Test zachowuje się poprawnie… “should have_many(:feeds)” tak na prawdę zrobi: Category.send(“has_many?”, :feeds). Czego się spodziewasz? Że sprawdzi czy zdefiniowałeś w modelu asocjację?
Jeśli tak, to moim zdaniem jest to bez sensu :). Lepiej przetestować czy asocjacja działa tak na prawdę, jeśli w ogóle. Testowanie ActiveRecord pozostaw gościom od ActiveRecord.
Rspec 2.0 jest kompatybilny z rspec 1.2/1.3 w większości, więc spokojnie dokumentacja od 1.3 powinna być ok, albo “The Rspec Book” (wygoogluj).
Tak, spodziewam się że sprawdzi, czym mam tę asocjację i moim zdaniem ma to sens. W 1.3 to śmiga bez problemowo.
Drugi test też działa na 1.3, tutaj w ogóle rspec nie wie o co mi kamen, a po zmianie na have_validate_presence_of :name zachowuje się identycznie jak pierwszy: undefined method dla Category
oo, to nie wiedziałem że tak można… to na pewno nie shoulda?
Edit: chyba musisz używaś shoulda z 1.3 żeby mieć takie coś (IMHO bez sensu).
Chyba masz rację Hubert, z tym że nie chodzi o shoulde, a o remarkable. Dzięki za pomoc
Ha! Wiedziałem że taki ficzer by mi nie umknął gdyby w samym rspecu był :).